我在DB2中有以下表:
<表类>
COLUMN_NAME
DATA_TYPE
TYPE_NAME
COLUMN_SIZE
COLUMN_TEXT
tbody><<tr>DMYEAR 3 十进制 4 财政年度 DMYTYP 2 CHAR()位数据 1 年类型 DMPTYP 2 CHAR()位数据 1 期类型 DMTYPE 2 CHAR()位数据 6 类型的数据 DMPROD 2 CHAR()位数据 35 产品代码 DMVL01 3 十进制 17 值周期1 DMVL02 3 十进制 17 值周期2 DMVL03 3 十进制 17 价值时期3 DMVL04 3 十进制 17 价值时期4 DMVL05 3 十进制 17 值周期5 DMVL06 3 十进制 17 值期6 DMVL07 3 十进制 17 值期7 DMVL08 3 十进制 17 值期8 DMVL09 3 十进制 17 价值期9 DMVL10 3 十进制 17 值期10 DMVL11 3 十进制 17 价值时期11 DMVL12 3 十进制 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