程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2列轉行的實現

DB2列轉行的實現

編輯:DB2教程

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子句中的一個表產生了關系,取出了表中的一列作為數據.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved