Sql server 需要使用TSQL创建查询的帮助吗
我有一个具有以下结构和数据的表:Sql server 需要使用TSQL创建查询的帮助吗,sql-server,database,tsql,Sql Server,Database,Tsql,我有一个具有以下结构和数据的表: ID_A | ID_B A 1 A 2 B 1 B 2 C 1 C 3 D 1 D 2 D 3 我需要找到不同的B集合,它们存在于给定的A id中。在本例中,结果为: 1,2 1,3 1,2,3 如果我也能数到,那就太好了: 1,2[2] 1,3[1] 1,2,3[1] 我希望这个问题是清楚的。谢谢 MS SQL Server 2012架构设置: cr
ID_A | ID_B
A 1
A 2
B 1
B 2
C 1
C 3
D 1
D 2
D 3
我需要找到不同的B集合,它们存在于给定的A id中。在本例中,结果为:
create table YourTable
(
ID_A char(1),
ID_B int
)
insert into YourTable values
( 'A', 1),
( 'A', 2),
( 'B', 1),
( 'B', 2),
( 'C', 1),
( 'C', 3),
( 'D', 1),
( 'D', 2),
( 'D', 3)
select T.ID_B,
count(*) as C
from
(
select T1.ID_A,
(
select ','+cast(T2.ID_B as varchar(10))
from YourTable as T2
where T2.ID_A = T1.ID_A
order by T2.ID_B
for xml path(''), type
).value('substring(text()[1], 2)', 'varchar(max)') as ID_B
from YourTable as T1
group by T1.ID_A
) as T
group by T.ID_B
| ID_B | C |
-------------
| 1,2 | 2 |
| 1,2,3 | 1 |
| 1,3 | 1 |
查询1:
create table YourTable
(
ID_A char(1),
ID_B int
)
insert into YourTable values
( 'A', 1),
( 'A', 2),
( 'B', 1),
( 'B', 2),
( 'C', 1),
( 'C', 3),
( 'D', 1),
( 'D', 2),
( 'D', 3)
select T.ID_B,
count(*) as C
from
(
select T1.ID_A,
(
select ','+cast(T2.ID_B as varchar(10))
from YourTable as T2
where T2.ID_A = T1.ID_A
order by T2.ID_B
for xml path(''), type
).value('substring(text()[1], 2)', 'varchar(max)') as ID_B
from YourTable as T1
group by T1.ID_A
) as T
group by T.ID_B
| ID_B | C |
-------------
| 1,2 | 2 |
| 1,2,3 | 1 |
| 1,3 | 1 |
:
create table YourTable
(
ID_A char(1),
ID_B int
)
insert into YourTable values
( 'A', 1),
( 'A', 2),
( 'B', 1),
( 'B', 2),
( 'C', 1),
( 'C', 3),
( 'D', 1),
( 'D', 2),
( 'D', 3)
select T.ID_B,
count(*) as C
from
(
select T1.ID_A,
(
select ','+cast(T2.ID_B as varchar(10))
from YourTable as T2
where T2.ID_A = T1.ID_A
order by T2.ID_B
for xml path(''), type
).value('substring(text()[1], 2)', 'varchar(max)') as ID_B
from YourTable as T1
group by T1.ID_A
) as T
group by T.ID_B
| ID_B | C |
-------------
| 1,2 | 2 |
| 1,2,3 | 1 |
| 1,3 | 1 |
和您是否有正在使用但不起作用的SQL?你看,我们不是来为你写软件的,我们是来互相帮助调试我们一直坚持的东西的。@MichaelPerrenoud:也许你不是来为别人写软件的,但在过去我请求过这样的帮助,我得到了。我不知道从哪里开始查询,所以除了搔搔头,我什么也没试过。以所有其他SO用户的名义说话可能太多了……问这样的问题,你没有遵守这个社区制定的规则和条例。请请注意“做你的家庭作业”部分。@MichaelPerrenoud:如果我需要帮助来理解它是如何工作的,我会问你的,谢谢。顺便说一句,我比你早了三年左右就开始抱怨了。@MichaelPerrenoud:让我告诉你,只有一个抱怨(你的),答案就在这里,所以对其他人来说,这似乎是一个合理的问题……哇,太棒了!即使有两条生命,我也没能以这样的事情结束:谢谢。