对于我的 ETL 作业之一,我需要一个将行转换为列的 SQL 查询。困难在于我想参数化有多少行转换为一列,如下例所示:
ATM 我的场景如下所示:
甲骨文 11g
一列表:
范围
AB
AE
CF
生长激素
5G
H3
7P
……
SQL查询:
SELECT listagg (''''
||PARAMETER
||'''', ',') WITHIN GROUP (
ORDER BY ROWNUMBER) AS PARAMETER,
FROM
(SELECT
CASE
WHEN ROWNUM <= 5 THEN 5
WHEN ROWNUM <= 10 THEN 10
WHEN ROWNUM <= 15 THEN 15
WHEN ROWNUM <= 20 THEN 20
WHEN ROWNUM <= 25 THEN 25
END AS ROWNUMBER
PARAMETER
FROM SR0_CRTL_SL_OL_PSM_PARAMETER
)
GROUP BY ROWNUMBER
结果如下所示:
范围
AB、BG、RT、ZH、JK
AE、HL、GH、DZ、KL
CF、GH、NM、SD、WE ......
我想要的是一个带有数字的查询,例如。5,结果如下:
范围
AB、BG、RT、ZH、JK
AE、HL、GH、DZ、KL
CF、GH、NM、SD、WE ......
或者它需要例如。8,结果如下:
范围
AB、BG、RT、ZH、JK、AE、HL、GH
DZ、KL、CF、GH、NM、SD、WE、DE
FG、JK、KL、UZ、IT、FG、HR、TZ ......
我希望你明白我的意思。也许有人可以为我提供一些帮助。
谢谢
PS:我知道我的英语非常好”:}