使用 LISTAGG 升序排序

问题描述 投票:0回答:1

我对 SQL 还很陌生,并且看到了很多问题,但我还没有看到任何答案来帮助我获得结果。我有一个查询,需要按升序对列 REFDES 进行排序。任何帮助将不胜感激。在我提供的图片中,您可以看到 REFDES 列不是按升序排列的。


      WITH DistinctRefDes AS (
    SELECT bom.PINBR,
           bom.PITR,
           bom.CINBR,
           bom.CITR,
           REPLACE(TRIM(bom.REFDES), ',', '') AS REFDES
    FROM FILTD.PREFP110 bom
    WHERE TRIM(bom.REFDES) <> ''
    GROUP BY bom.PINBR,
             bom.PITR,
             bom.CINBR,
             bom.CITR,
             REPLACE(TRIM(bom.REFDES), ',', '')
    ),
    OrderedRefDes AS (
    SELECT PINBR,
           PITR,
           CINBR,
           CITR,
           REFDES
    FROM DistinctRefDes
    ORDER BY REFDES
    ),
    DistinctRefDes2 AS (
    SELECT PINBR,
           PITR,
           CINBR,
           CITR,
           LISTAGG(REFDES, ' ') WITHIN GROUP (ORDER BY REFDES) AS REFDES
    FROM OrderedRefDes
    GROUP BY PINBR,
             PITR,
             CINBR,
             CITR
    )
    SELECT bom.PINBR                            AS "PNumber",
       i2.ITDSC                             AS "PName",
       bom.PITR                             AS "PRev",
       bom.CINBR                            AS "CNumber",
       itmrva.ITDSC                         AS "CDesc",
       bom.CITR                             AS "CRev",
       bom.QTYPR                            AS "Qty",
       COALESCE(DistinctRefDes2.REFDES, '') AS REFDES,
       itembl.MOHTQ
    FROM AMFLIBD.PSTDTL bom
    LEFT JOIN DistinctRefDes2
       ON bom.PINBR = DistinctRefDes2.PINBR
       AND bom.PITR = DistinctRefDes2.PITR
       AND bom.CINBR = DistinctRefDes2.CINBR
       AND bom.CITR = DistinctRefDes2.CITR
    LEFT JOIN AMFLIBD.ITMRVA itmrva
       ON bom.CINBR = itmrva.ITNBR AND bom.CITR = itmrva.ITRV
    LEFT JOIN AMFLIBD.ITMRVA i2
       ON bom.PINBR = i2.ITNBR AND bom.PITR = i2.ITRV
    LEFT JOIN AMFLIBD.ITEMBL itembl
       ON bom.CINBR = itembl.ITNBR AND itembl.HOUSE = 'MVS'
    WHERE bom.PINBR = '980-218130-106'
    AND bom.PITR = 'B'
    ORDER BY bom.CINBR;
sql db2 listagg
1个回答
0
投票

要按升序对 REFDES 列进行排序,您需要修改包含 REFDES 的 ORDER BY 子句。 您可以尝试以下操作: ORDER BY COALESCE(DistinctRefDes2.REFDES, "), bom.CINBR; 而不是 ORDER BY bom.CINBR;

© www.soinside.com 2019 - 2024. All rights reserved.