代码之家  ›  专栏  ›  技术社区  ›  trx

带联接的Oracle选择查询

  •  0
  • trx  · 技术社区  · 6 年前

     Select Cage.BARCODE Cg, CagePen.BARCODE Pen
     FROM LOCATION_ENTITY CagePen
     LEFT JOIN LOCATION_ENTITY Cage ON SUBSTR(CagePen.FULL_LOCATION, -6)=Cage.BARCODE
     WHERE CagePen.FULL_LOCATION = 'Current'
    

    我得到的回复是

          CG    PEN
      CGE100    CP4265
      CGE100    CP4264
      CGE101    CP4266
      CGE101    CP4267
      CGE102    CP4268
      CGE102    CP4269
    

    现在我试着巩固CG重复的反应

       CG            PEN
     CGE100   CP4265,   CP4264
     CGE101   CP4266,   CP4267
     CGE102   CP4268,   CP4269
    

    此查询是否应使用 agg()

    1 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

    你在找 listagg()

    SELECT Cage.BARCODE as Cg, LISTAGG(CagePen.BARCODE, ',') WITHIN GROUP (ORDER BY CagePen.BARCODE) as Pens
    FROM LOCATION_ENTITY CagePen LEFT JOIN
         LOCATION_ENTITY Cage 
         ON SUBSTR(CagePen.FULL_LOCATION, -6) = Cage.BARCODE
    WHERE CagePen.FULL_LOCATION = 'Current'
    GROUP BY Cage.BARCODE;