2011-01-13 77 views
0

SQL Server 2005的从同一个表加入1到许多和追加到行

1表

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

2查询

1查询获取基于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 

这是可能的查询组合?

+0

当有更多项目关联时,这并不能很好地扩展。列出值更具可扩展性。 –

+0

我必须在报告中连续显示结果。每个ID有大约5个项目。 – ccoop

+0

还有1000个ID的。 – ccoop

回答

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, '[email protected]+' 
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 ('[email protected]+')) PV' 

EXEC(@Query) 
0

看到我的answer here关于表旋转。同样的基本问题。