Я могу воссоздать вашу начальную позицию следующим скриптом:
CREATE TABLE DataTable (Id INT, Имя Nvarchar (40), Значение Nvarchar (40))
INSERT DataTable VALUES (1, «TaskID», «123»)
INSERT DataTable VALUES (1, «Язык», «Java»)
INSERT VALUTES DataTable (2, «TaskID», «456»)
SELECT id, [TaskID], [Language]
ОТ (
SELECT ID, [Имя], [Значение] ИЗ DataTable
) Как
PIVOT
(MAX (значение) FOR [Name] IN ([TaskID], [Language])) AS p
DROP TABLE DataTable
Результаты:
id TaskID Language
1 123 Ява
2 456 NULL
Однако, когда я бегу:
CREATE TABLE DataTable (Id INT, Имя Nvarchar (40), Значение Nvarchar (40))
INSERT DataTable VALUES (1, NULL, NULL)
INSERT VALUTES DataTable (2, NULL, NULL)
SELECT id, [TaskID], [Language]
ОТ (
SELECT ID, [Имя], [Значение] ИЗ DataTable
) Как
PIVOT
(MAX (значение) FOR [Name] IN ([TaskID], [Language])) AS p
DROP TABLE DataTable
Результаты:
id TaskID Language
1 NULL NULL
2 NULL NULL
Это хорошо работает.
Мне кажется, я что-то упускаю из того, что вы делаете?