向同一列添加多个SUM(CASE)s



我在DB2中有以下表:

<表类> COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE COLUMN_TEXT tbody><<tr>DMYEAR3十进制4财政年度DMYTYP2CHAR()位数据1年类型DMPTYP2CHAR()位数据1期类型DMTYPE2CHAR()位数据6类型的数据DMPROD2CHAR()位数据35产品代码DMVL013十进制17值周期1DMVL023十进制17值周期2DMVL033十进制17价值时期3DMVL043十进制17价值时期4DMVL053十进制17值周期5DMVL063十进制17值期6DMVL073十进制17值期7DMVL083十进制17值期8DMVL093十进制17价值期9DMVL103十进制17值期10DMVL113十进制17价值时期11DMVL123十进制17价值期12

尝试将相应的表达式添加到内部CASE以获得所有12 (x, DMVLx)对:

WITH 
T (DMMONTH) AS (VALUES 1 UNION ALL SELECT DMMONTH + 1 FROM T WHERE DMMONTH < 12)
SELECT 
DMYEAR, DMMONTH, DMPTYP, DMPROD
, Sum (CASE WHEN DMTYPE = 'COST'   THEN CASE DMMONTH WHEN 1 THEN DMVL01 WHEN 2 THEN DMVL02 ... WHEN 12 THEN DMVL12 END ELSE 0 END) AS COST
, Sum (CASE WHEN DMTYPE = 'RTNCST' THEN CASE DMMONTH WHEN 1 THEN DMVL01 WHEN 2 THEN DMVL02 ... WHEN 12 THEN DMVL12 END ELSE 0 END) AS RTNCST
FROM DWM, T
WHERE DMPTYP = 'M' 
GROUP BY DMYEAR, DMMONTH, DMPTYP, DMPROD
ORDER BY 1, 3

最新更新