【问题标题】:Getting a distinct comma-delimited string in T-SQL在 T-SQL 中获取不同的逗号分隔字符串
【发布时间】:2021-06-29 15:24:05
【问题描述】:

我被难住了。使用 SQL Server 2019。

SELECT * FROM (VALUES 
  (1, 'Alice', 'Alice'),
  (2, 'Robert', 'Robert'),
  (3, 'Robert', 'Bob'),
  (4, 'Richard', 'Rich'),
  (5, 'Richard', 'Rick'),
  (6, 'Richard', 'Dick')
) tmp (ID, RealName, NickName)

鉴于此,我想制作一个表格,显示每个用户及其可能的昵称。我希望结果是:

Name AKA
Alice NULL
Robert Bob
Richard Rich, Rick, Dick

我研究了关于 SO 的其他类似问题,但并没有完全解决从 AKA 列中省略名称的问题。 TIA

SQL Distinct comma delimited list

Produce DISTINCT values in STRING_AGG

【问题讨论】:

    标签: sql sql-server tsql sql-server-2019


    【解决方案1】:

    像这样:

    with q as
    (
      SELECT * FROM (VALUES 
      (1, 'Alice', 'Alice'),
      (2, 'Robert', 'Robert'),
      (3, 'Robert', 'Bob'),
      (4, 'Richard', 'Rich'),
      (5, 'Richard', 'Rick'),
      (6, 'Richard', 'Dick')
      ) tmp (ID, RealName, NickName)
    )
    select RealName, 
           string_agg(case when RealName <> NickName then NickName else null end, ', ') AKA
    from q
    group by RealName
    

    输出

    RealName AKA
    -------- ---------------------
    Alice    NULL
    Richard  Rick, Rich, Dick
    Robert   Bob
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多