[英]Converting rows to columns in ORACLE SQL with parametrization
对于我的一个ETL职位,我需要一个SQL查询将行转换为列。 困难在于我想参数化将多少行转换为一列,如以下示例所示:
ATM我的情况如下:
甲骨文11g
一栏表格:
参数
AB
自动曝光
碳纤维
GH
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:我知道我的英语真好。
您可以使用算术来计算组-进行除法并从中取整数。 以下使用“ 8”作为参数:
SELECT listagg (''''||PARAMETER||'''', ',') WITHIN GROUP (ORDER BY RowNumber) AS PARAMETER,
FROM (SELECT trunc((rownum - 1) / 8) as grp, t.*,
rownum as RowNumber
FROM SR0_CRTL_SL_OL_PSM_PARAMETER t
) t
GROUP BY grp;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.