繁体   English   中英

使用参数化在ORACLE SQL中将行转换为列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM