在db2 sql中将行转换为列

3vpjnl9f  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(161)

我有表subs_details的示例数据和如下列:
| 识别码|编号|
| - -|- -|
| 一个|小行星4579|
| 2个|小行星5678|
| 三个|小行星6678|
| 2个|小行星78|
| 一个|小行星5479|
| 三个|小行星5779|
我想把它转换成下面的输出:
| 识别码1| id 1_编号|二号识别码|id 2_编号|三号识别码|id 3_编号|
| - -|- -|- -|- -|- -|- -|
| 一个|小行星4579| 2个|小行星5678|三个|小行星6678|
| 一个|小行星5479| 2个|小行星78|三个|小行星5779|
请帮忙

6qfn3psc

6qfn3psc1#

您可以按原样运行它。

WITH 
  MYTAB (ID, Number) AS
(
VALUES
  (1, 4579)
, (2, 5678)
, (3, 6678)
, (2, 7803)
, (1, 5479)
, (3, 5779)
)
, MYTAB_NUMBERED AS
(
SELECT T.*, ROW_NUMBER () OVER (PARTITION BY ID) AS RN_
FROM MYTAB T
)
SELECT 
  1 AS ID1, T1.NUMBER AS ID1_NUMBER
, 2 AS ID2, T2.NUMBER AS ID2_NUMBER  
, 3 AS ID3, T3.NUMBER AS ID3_NUMBER
FROM (SELECT DISTINCT RN_ FROM MYTAB_NUMBERED) N
LEFT JOIN MYTAB_NUMBERED T1 ON T1.RN_ = N.RN_ AND T1.ID = 1
LEFT JOIN MYTAB_NUMBERED T2 ON T2.RN_ = N.RN_ AND T2.ID = 2
LEFT JOIN MYTAB_NUMBERED T3 ON T3.RN_ = N.RN_ AND T3.ID = 3

| 识别码1|标识1_编号|识别码2| ID 2_编号|ID 3识别码|ID 3_编号|
| - -|- -|- -|- -|- -|- -|
| 一个|四千五百七十九人|2个|5,678人|三个|六千六百七十八人|
| 一个|5,479人|2个|七千八百零三人|三个|5,779人|

相关问题