DB2行列轉置之行轉列
建表,並insert 2行資料
CREATE TABLE SalesAgg(year INTEGER, q1 INTEGER, q2 INTEGER, q3 INTEGER, q4 INTEGER);
insert into SalesAgg values(2004,20,30,15,10);
insert into SalesAgg values(2005,18,40,12,27);
Select * from SalesAgg
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 Year, Quarter, Results
FROM SalesAgg AS S,
LATERAL(VALUES(1, S.q1),
(2, S.q2),
(3, S.q3),
(4, S.q4))
AS Q(Quarter, Results);
LATERAL的地方可以換成TABLE,結果一樣,其目的都是透過VALUES值來組合成一個臨時表Q在SQL中使用
SELECT Year, Quarter, Results
FROM SalesAgg AS S,
TABLE(VALUES(1, S.q1),
(2, S.q2),
(3, S.q3),
(4, S.q4))
AS Q(Quarter, Results);
另外一個使用TABLE的例子
SELECT id ANSWER
,salary AS sal
,comm AS com
,combo
,typ
FROM staff
,TABLE (
VALUES (
salary
,'SAL'
)
,(
comm
,'COM'
)
) AS tab(combo, typ)
WHERE id < 40
ORDER BY id
,typ;
行轉列使用示例
CREATE OR REPLACE PROCEDURE DB2INST1.TEST(OUT out_msg VARCHAR(4000))
SPECIFIC DB2INST1.TEST
MODIFIES SQL DATA
NOT DETERMINISTIC
NULL CALL
LANGUAGE SQL EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
BEGIN
DECLARE v_col1s VARCHAR(4000);
DECLARE v_sql VARCHAR(4000);
SELECT SUBSTR(XMLCAST(XMLGROUP(',' || col1 AS a ORDER BY col1) as varchar(4000)),2) into v_col1s FROM aaa;
SET out_msg = 'SELECT * FROM aaa where col1 in (' || TRIM(v_col1s) || ')';
END@
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/725820/viewspace-2132496/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DB2 行列轉置之行轉列DB2
- excel列轉行怎麼做 excel如何轉置行列Excel
- oracle行列轉換-行轉列Oracle
- oracle行列轉換-列轉行Oracle
- 行列轉換,列行轉換統計
- sql行列轉置的實現方法SQL
- oracle行列轉換-字串轉換成多列Oracle字串
- oracle行列轉換-多列轉換成字串Oracle字串
- 一個sql的行列轉置的例子SQL
- SQL 如何實現動態的行列轉置SQL
- postgresql高階應用之行轉列&彙總求和SQL
- 行列轉換
- 行列轉換 交叉表 (轉)
- 使用動態SQL語句實現簡單的行列轉置(動態產生列)SQL
- Kettle行列轉換
- 偽行列轉換!
- 行列轉換sqlSQL
- Oracle-行列轉換Oracle
- MySQL行列轉換拼接MySql
- 行列轉換之大全~~~
- sql server 行列轉換SQLServer
- oracle行列轉換-多行轉換成字串Oracle字串
- DB2 SQL之行合併(連線)DB2SQL
- mysql行列轉換詳解MySql
- sql server行列轉換案例SQLServer
- Oracle 行列轉換 經典Oracle
- Oracle 行列轉換總結Oracle
- Oracle 行列轉換小結Oracle
- 【SQL 學習】行列轉換SQL
- 【SQL】行列轉換方法示例SQL
- Oracle行列轉換總結Oracle
- Shell練習 行列轉換
- 複雜的行列轉換
- SQL Server資料庫基礎之行資料轉換為列資料SQLServer資料庫
- 專訪:Ubuntu Linux源自太空之行(轉)UbuntuLinux
- 記錄一個行列轉換
- 通用的行列轉換的方法
- 行列轉換問題總結