首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择一个列具有多个值的行?

如何选择一个列具有多个值的行?
EN

Stack Overflow用户
提问于 2022-10-10 12:52:11
回答 1查看 30关注 0票数 0

SQL Server。我有一个表,并希望选择在一列中具有相同值的行?

示例:

代码语言:javascript
复制
declare @t table (id int not null, parent_id int not null, name nvarchar(128))

insert into @t(id, parent_id, name) values(1, 0, N'1-1')
insert into @t(id, parent_id, name) values(10, 1, N'10-1')
insert into @t(id, parent_id, name) values(11, 1, N'11-1')
insert into @t(id, parent_id, name) values(12, 1, N'12-2')
insert into @t(id, parent_id, name) values(21, 10, N'21-11')
insert into @t(id, parent_id, name) values(31, 12, N'31-12')
insert into @t(id, parent_id, name) values(32, 13, N'32-12')
insert into @t(id, parent_id, name) values(33, 13, N'33-12')
insert into @t(id, parent_id, name) values(34, 13, N'34-12')

预期结果是:

代码语言:javascript
复制
id={10, 11, 12} and id ={32,33,34} 

因为他们有相同的parent_id

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-10 12:59:31

string_agg()是一种选择

代码语言:javascript
复制
Select parent_id
      ,Array = string_agg(id,',')
 From  @t
 Group By parent_id
 having count(*)>1

结果

代码语言:javascript
复制
parent_id   Array
1           10,11,12
13          32,33,34

如行

代码语言:javascript
复制
 Select  top 1 with ties *
  from  @T
  order by case when sum(1) over (partition by parent_id) >1 then 0 else 1 end


id  parent_id   name
10  1           10-1
11  1           11-1
12  1           12-2
32  13          32-12
33  13          33-12
34  13          34-12
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74015282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档