DB2列轉行是我們很常見的操作,下面就為您詳細介紹DB2列轉行的步驟,如果您對DB2列轉行方面感興趣的話,不妨一看。
給出下面數據
CREATE TABLE SalesAgg
( year INTEGER,
q1 INTEGER,
q2 INTEGER,
q3 INTEGER,
q4 INTEGER );
YEAR Q1 Q2 Q3 Q4
----------- ----------- ----------- ----------- -----------
2004 20 30 15 10
2005 18 40 12 27
想要的結果
YEAR QUARTER RESULTS
----------- ----------- -----------
2004 1 20
2004 2 30
2004 3 15
2004 4 10
2005 1 18
2005 2 40
2005 3 12 2005 4 27
這個SQL就可以實現:
SELECT S.Year, Q.Quarter, Q.Results
FROM SalesAgg AS S,
TABLE (VALUES(1, S.q1),
(2, S.q2),
(3, S.q3),
(4, S.q4))
AS Q(Quarter, Results);
每個values中對應列的數據類型必須相同,值可以任意,如1,2,3,4都是整形下面解釋一下執行的過程:核心是用table函數創建了一個表,這個表是用value實現的多行表,value實現虛表的例子:
db2 => select * from (values (1,2),(2,3)) as t1(col1,col2)
COL1 COL2
----------- -----------
1 2
2 3
2 條記錄已選擇。
db2 => select * from (values 1) as a
1
-----------
1
1 條記錄已選擇。
所不同的是這裡跟from子句中的一個表產生了關系,取出了表中的一列作為數據.