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

时间:2011-01-13 20:22:06

标签: sql sql-server sql-server-2005

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

这可能吗?

1 个答案:

答案 0 :(得分:0)

好吧,我担心你将不得不使用动态sql,所以一定要先访问这个link。一旦你这样做,你可以试试这个:

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)