Sql 将行转换为列并计算总和
我有这个 我想要这个 但是我得到了这个 我的问题是Sql 将行转换为列并计算总和,sql,db2,db2-400,Sql,Db2,Db2 400,我有这个 我想要这个 但是我得到了这个 我的问题是 SELECT SID, NAME, SUBJECT, ( CASE WHEN EXAMTYPE IN ('ASSIGNMENTS', 'PRACTICAL') THEN SUM(MARKS) ELSE 0 E
SELECT SID,
NAME,
SUBJECT, (
CASE
WHEN EXAMTYPE IN ('ASSIGNMENTS',
'PRACTICAL') THEN SUM(MARKS)
ELSE 0
END) AS "ASSIGNMENTS + PRACTICAL", (
CASE
WHEN EXAMTYPE = 'WRITTEN' THEN SUM(MARKS)
ELSE 0
END) AS "WRITTEN"
FROM MARKSHEET
WHERE EXAMTYPE IN ('ASSIGNMENTS',
'PRACTICAL',
'WRITTEN')
GROUP BY SID,
NAME,
SUBJECT,
EXAMTYPE
我正在使用IBMDB2。
我将永远感激任何/所有的帮助。谢谢大家! 您需要将case表达式放在sum()中,比如
sum(case when…)
另外,从group by子句中删除examType
字段
SELECT SID,
NAME,
SUBJECT, sum(
CASE
WHEN EXAMTYPE IN ('ASSIGNMENTS',
'PRACTICAL') THEN MARKS
ELSE 0
END) AS "ASSIGNMENTS + PRACTICAL", (
sum(CASE
WHEN EXAMTYPE = 'WRITTEN' THEN MARKS
ELSE 0
END) AS "WRITTEN"
FROM MARKSHEET
WHERE EXAMTYPE IN ('ASSIGNMENTS', 'PRACTICAL', 'WRITTEN')
GROUP BY SID, NAME, SUBJECT