SQL,SUM+;案例
我尝试这样做:SQL,SUM+;案例,sql,sql-server,sum,case,Sql,Sql Server,Sum,Case,我尝试这样做: SELECT o.ID_DOSSIER, SUM(CASE WHEN ID_TYPE IN ('0','1') THEN SUM(TTL * -1) END) - SUM(CASE WHEN ID_TYPE IN ('2','3') THEN SUM(TTL) END) FROM ope o,actor a WHERE o.ID_ACTION=a.ID_ACTION GROUP BY o.ID_DOSSIER 问我如果你不知道我想做什么 以程序化的方式 case 1
SELECT
o.ID_DOSSIER,
SUM(CASE WHEN ID_TYPE IN ('0','1') THEN SUM(TTL * -1) END) - SUM(CASE WHEN ID_TYPE IN ('2','3') THEN SUM(TTL) END)
FROM
ope o,actor a
WHERE o.ID_ACTION=a.ID_ACTION
GROUP BY o.ID_DOSSIER
问我如果你不知道我想做什么
以程序化的方式
case 1 : ID_TYPE IN ('0','1') THEN TTL1 = TTL * -1
case 2 : ID_TYPE IN ('2','3') THEN TTL2 = TTL
和TTL=TTL2+TTL1
在FROM
子句中不要使用逗号。始终使用正确、明确的JOIN
语法
然后,不能嵌套聚合函数,因此这就足够了:
SELECT o.ID_DOSSIER,
SUM(CASE WHEN ID_TYPE IN ('0', '1') THEN TTL * -1
WHEN ID_TYPE IN ('2', '3') THEN TTL
END)
FROM ope o JOIN
actor a
ON o.ID_ACTION = a.ID_ACTION
GROUP BY o.ID_DOSSIER
我不知道你想做什么。问我如果你不知道我想做什么,你应该告诉我们你想做什么并寻求帮助我认为你只需要:
SUM(当ID_键入('0','1')时,TTL*-1当ID_键入('2','3'),然后TTL END)
@Jules:请告诉我你想做什么。@trincot我不知道你想评论什么。