将行转换为列并计算总和

问题描述

我有这个

enter image description here

我想要这个

enter image description here

但是我得到了这个

enter image description here

我的查询

<h1>

我正在使用IBM DB2。 我将永远感激任何/所有帮助。谢谢!

解决方法

您需要将case表达式放入sum()-像sum(case when...) 另外,从examType

中删除group by clause字段
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,SUBJECT