SQL Unpivot несколько столбцов Данные
Я использую SQL Server 2008, и я пытаюсь отключить данные. Вот код SQL, который я использую,
CREATE TABLE #pvt1 (VendorID int, Sa int, Emp1 int,Sa1 int,Emp2 int)
GO
INSERT INTO #pvt1 VALUES (1,2,4,3,9);
GO
--Unpivot the table.
SELECT distinct VendorID,Orders,Orders1
FROM
(SELECT VendorID, Emp1, Sa,Emp2,Sa1
FROM #pvt1 ) p
UNPIVOT
(Orders FOR Emp IN
(Emp1,Emp2)
)AS unpvt
UNPIVOT
(Orders1 FOR Emp1 IN
(Sa,Sa1)
)AS unpvt1;
GO
И вот результат приведенного выше кода.
VendorID Orders Orders1
1 4 2
1 4 3
1 9 2
1 9 3
Но я хочу, чтобы мой вывод был указан ниже.
VendorID Orders Orders1
1 4 2
1 9 3
Отношения из вышеуказанного кода равны 2, относится к 4, а 3 относится к 9.
Как я могу это достичь?
Ответы
Ответ 1
Более простой способ отключить данные будет использовать CROSS APPLY, чтобы раскрыть столбцы парами:
select vendorid, orders, orders1
from pvt1
cross apply
(
select emp1, sa union all
select emp2, sa1
) c (orders, orders1);
Смотрите SQL Fiddle with Demo. Или вы можете использовать CROSS APPLY с предложением VALUES, если вы не хотите использовать UNION ALL:
select vendorid, orders, orders1
from pvt1
cross apply
(
values
(emp1, sa),
(emp2, sa1)
) c (orders, orders1);
Смотрите скрипт SQL с демонстрацией