在 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)
鉴于此,我想制作一个 table 来显示每个用户及其可能的昵称。我希望结果是:
Name
AKA
Alice
NULL
Robert
Bob
Richard
Rich, Rick, Dick
我调查过关于 SO 的其他类似问题,但没有完全解决从 AKA 列中省略名称的问题。 TIA
SQL Distinct comma delimited list
像这样:
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
我被难住了。使用 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)
鉴于此,我想制作一个 table 来显示每个用户及其可能的昵称。我希望结果是:
Name | AKA |
---|---|
Alice | NULL |
Robert | Bob |
Richard | Rich, Rick, Dick |
我调查过关于 SO 的其他类似问题,但没有完全解决从 AKA 列中省略名称的问题。 TIA
SQL Distinct comma delimited list
像这样:
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