提问人:EthanT 提问时间:11/17/2023 最后编辑:marc_sEthanT 更新时间:11/17/2023 访问量:51
当另一列不同时,选择“与一列不同”
Select Distinct from one column when another column differs
问:
我有一张桌子:
CREATE TABLE #Temp1
(
Category_One varchar(10),
Category_Two varchar(10)
)
INSERT INTO #Temp1 (Category_One, Category_Two)
VALUES ('a', 'c'),
('b', 'c'),
('a', 'd'),
('b', 'd'),
('a', 'e'),
('a', 'f'),
('b', 'g')
Category_One | Category_Two |
---|---|
一个 | c |
b | c |
一个 | d |
b | d |
一个 | e |
一个 | f |
b | g |
我如何返回这样的表,该表返回一个不同的列表,但还返回一个额外的列,告诉我最终类别是否由两个单独的 ' 组成?CategoryTwo
CategoryOne
Category_Final | 描述 |
---|---|
c | A类和B类 |
d | A类和B类 |
e | A类 |
f | A类 |
g | b类 |
答:
3赞
Xedni
11/17/2023
#1
如果运行的是支持 (2017+) 的 SQL Server 版本,并且有三个或更多值,则可以多次重复“and”一词,这应该有效:string_agg
category_one
select
Category_two,
Description =
'Category ' +
string_agg(category_one, ' and ') within group (order by category_one)
from #Temp1
group by Category_two
请注意,如果您有三个或更多值,则每个项目之间将重复单词“and”。category_one
评论
0赞
EthanT
11/17/2023
很棒的解决方案。我也不知道string_agg()是一个函数,谢谢。
0赞
Xedni
11/17/2023
很高兴我能帮上忙
下一个:我正在尝试比较同一表中的数据行
评论
STRING_AGG
PIVOT