我正在为此苦苦挣扎。我想使用一个字段内的条件来过滤表结果,该条件驱动其他字段的结果。我正在尝试做的事情的简单版本:
ORG查看字段和值
org_name, revenue, costs, year
org_w, 50, 40, 2020
org_w, 60, 50, 2021
org_x, 20, 10, 2020
org_x, 100, 80, 2021
org_y, 50, 40, 2020
org_y, 120, 100, 2021
我想运行一个查询来过滤上述所有表格视图,其中 2021 年的收入在 100 到 500 之间
作为示例,它将返回以下结果(即排除 org_w,因为其 2021 年的收入超出范围)
org_name, revenue, costs, year
org_x, 20, 10, 2020
org_x, 100, 80, 2021
org_y, 50, 40, 2020
如果有人可以帮助我,我将非常感激。
我尝试将年份放入列中,但失败了......即 max(年份 = 2021 年则收入结束的情况)AS 2021
您可以使用
EXISTS
检查一个或多个条件是否对一个组织名称有效。
CREATE TABLE Tablen
(`org_name` varchar(5), `revenue` int, `costs` int, `year` int)
;
INSERT INTO Tablen
(`org_name`, `revenue`, `costs`, `year`)
VALUES
('org_w', 50, 40, 2020),
('org_w', 60, 50, 2021),
('org_x', 20, 10, 2020),
('org_x', 100, 80, 2021),
('org_y', 50, 40, 2020),
('org_y', 120, 100, 2021)
;
SELECT `org_name`, `revenue`, `costs`, `year`
FROM Tablen tn
WHERE EXISTS ( SELECT 1 FROM Tablen WHERE `org_name` = tn.`org_name`
AND `revenue` BETWEEN 100 AND 500 AND `year` = 2021)
组织名称 | 收入 | 费用 | 年 |
---|---|---|---|
org_x | 20 | 10 | 2020 |
org_x | 100 | 80 | 2021 |
org_y | 50 | 40 | 2020 |
org_y | 120 | 100 | 2021 |