Соедините 1 со многими из одной таблицы и добавьте в строку - PullRequest
0 голосов
/ 13 января 2011

SQL Server 2005

1 Стол

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

2 запроса

1-й запрос получает уникальные результаты на основе идентификатора

ID 
---
1
2
3
4
5

2-й запрос подсчитывает количество идентификаторов проекта по идентификатору

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 голосов
/ 13 января 2011

Что ж, боюсь, вам придется использовать динамический 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...