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

如何在SQL Serrver中对现有记录进行分组

  •  1
  • asmgx  · 技术社区  · 1 年前

    我有一张这样的桌子

    RepID     Code   Target
    1         A      P2
    1         B      L7
    1         C      L7
    1         D      J3
    3         A      P5
    3         R      H3
    4         D      L7
    4         F      K4
    

    我想按分组,这样最终结果看起来像这样

    针对Target L7

    RepID    Code    TargetExist
    1        B,C     1
    3        NULL    0
    4        D       1
    

    我尝试了此查询,但不适用

    SELECT RepID, Agg_Str(Code, ','), CASE WHEN Target='L7' THEN 1 ELSE 0 END
    FROM MyTable
    GROUP BY RepID
    

    知道怎么解决吗?

    1 回复  |  直到 1 年前
        1
  •  4
  •   John Cappelletti    1 年前

    也许是这样。

    每列都必须是一个聚合或组中的

    SELECT RepID
          , Code = string_agg(IIF(Target='L7',code,null), ',')
          , TargetExists = max(CASE WHEN Target='L7' THEN 1 ELSE 0 END)
    FROM YourTable
    GROUP BY RepID
    

    后果

    RepID   Code        TargetExists
    1       B,C         1
    3       NULL        0
    4       D           1