gpt4 book ai didi

sql - GROUP BY 后 CASE WHEN

转载 作者:行者123 更新时间:2023-12-04 18:59:43 28 4
gpt4 key购买 nike

我正在尝试从连接创建一个表并根据 id 对一些字段求和。这部分工作得很好。我还尝试添加一个额外的列并使用 case when 语句来填充它。

这是脚本

CREATE TABLE TABLE1
AS
SELECT ID, IDC, SUM(AMOUNT) PRICE, SUM(COST) COST, SUM(AMOUNT-COST) PROFIT,
CASE PROFIT
WHEN PROFIT < 1000 THEN 'Low'
WHEN PROFIT < 5000 THEN 'Medium'
ELSE 'High'
END AS PROFITLEVEL
FROM
(SELECT DISTINCT ID, IDC, AMOUNT, COST
FROM ORDER_ITEMS
LEFT JOIN ORDERS
ON ID = IDC)
GROUP BY ID, IDC;

然而,这会返回 ORA-00905 : Missing keyword 错误。

任何帮助,将不胜感激

最佳答案

您正在使用 CASE以错误的方式;此外,您尝试使用别名 PROFIT在您定义它的同一级别。

您需要编辑CASE并使用给出 PROFIT 的表达式而不是别名 PROFIT :

CREATE TABLE TABLE1 AS
SELECT ID,
IDC,
SUM(AMOUNT) PRICE,
SUM(COST) COST,
SUM(AMOUNT - COST) PROFIT,
CASE
WHEN SUM(AMOUNT - COST) < 1000 THEN 'Low'
WHEN SUM(AMOUNT - COST) < 5000 THEN 'Medium'
ELSE 'High'
END AS PROFITLEVEL
FROM (SELECT DISTINCT ID,
IDC,
AMOUNT,
COST
FROM ORDER_ITEMS LEFT JOIN ORDERS ON ID = IDC)
GROUP BY ID, IDC;

您尝试使用 CASE 的方式如果您需要检查单个值,这很有用;例如:
select level,
case level
when 1 then 'one'
when 2 then 'two'
else 'other'
end
from dual
connect by level <=3

关于sql - GROUP BY 后 CASE WHEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40631173/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com