繁体   English   中英

从同一张表中加入1对多并附加到行

[英]Join 1 to Many from the same table and append to row

SQL Server 2005

1桌

ID Project_id   
-------------
1  1           
1  2           
1  2           
1  3

2查询

第一个查询根据ID获得唯一的结果

ID 
---
1
2
3
4
5

第二个查询按ID总计project_id的数量

ID Project_id total
--------------------
1  1          1
1  2          2
1  3          1

我正在尝试合并查询,以便结果像这样排成一行

ID Project_id _1 Project_id_2 Project_id_3
-------------------------------------------
1  1             2            1

这可能吗?

好吧,恐怕您将不得不使用动态sql,因此请务必先访问此链接 完成此操作后,您可以尝试以下操作:

DECLARE @Project VARCHAR(MAX), @Query VARCHAR(MAX)

SELECT @Project = COALESCE(@Project + ',', '') + QUOTENAME('Project_Id_' + CAST(Project_id AS VARCHAR))
FROM Project
GROUP BY Project_id

SET @Query = '
SELECT Id, '+@Project+'
FROM (SELECT Id, ''Project_Id_'' + CAST(Project_id AS VARCHAR) Project_Id, 1 AS Num FROM Project) P
PIVOT(SUM(Num) FOR Project_Id IN ('+@Project+')) PV'

EXEC(@Query)

暂无
暂无

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

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