繁体   English   中英

在 T-SQL 中获取不同的逗号分隔字符串

[英]Getting a distinct comma-delimited string in T-SQL

我难住了。 使用 SQL 服务器 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)

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

姓名 又名
爱丽丝 NULL
罗伯特 鲍勃
理查德 里奇、瑞克、迪克

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

SQL 不同的逗号分隔列表

在 STRING_AGG 中产生 DISTINCT 值

像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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