2011-01-13 15 views
0

SQL Server 2005のが同じテーブルから多くの1に参加して、

1表

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

2は

第一クエリはIDに基づくユニークな結果を取得する照会行に追加

ID 
--- 
1 
2 
3 
4 
5 

2番目のクエリは、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'sの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に関するテーブルの回転を参照してください。同じ基本的な問題。

関連する問題