現有一張表(沒有現成的表,臨時產生)格式以下:
機器1 機器2 機器3 機器4 機器5 機器6
組別1 1 2 3 4 5 6
組別2 5 9 7 2 1 3
組別3 9 5 6 4 4 3
如今想轉換成以下格式:
組別1 組別2 組別3
機器1 1 5 9
機器2 2 9 5
機器3 3 7 6
機器4 4 2 4
機器5 5 1 4
機器6 6 3 5
不知道怎麼實現?請高手指教!謝謝!
能解釋sql語句的含義最好!!sql
--
測試環境
declare
@t
table
(zb
varchar
(
10
),機器1
int
,機器2
int
,機器3
int
,機器4
int
,機器5
int
,機器6
int
)
insert
into
@t
select
'
組別1
'
,
1
,
2
,
3
,
4
,
5
,
6
union
all
select
'
組別2
'
,
5
,
9
,
7
,
2
,
1
,
3
union
all
select
'
組別3
'
,
9
,
5
,
6
,
4
,
4
,
3
SELECT
*
FROM
(
SELECT
Employee,zb,Orders
FROM
(
SELECT
zb, 機器1, 機器2, 機器3, 機器4, 機器5, 機器6
FROM
@t
) p
UNPIVOT
(Orders
FOR
Employee
IN
(機器1, 機器2, 機器3, 機器4, 機器5, 機器6)
)
AS
unpvt
) T
PIVOT
(
MAX
(ORDERS)
for
zb
in
(
[
組別1
]
,
[
組別2
]
,
[
組別3
]
)
)
as
pt
--
結果
/**/
/*
Employee 組別1 組別2 組別3
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- -----------
機器1 1 5 9
機器2 2 9 5
機器3 3 7 6
機器4 4 2 4
機器5 5 1 4
機器6 6 3 3
(6 行受影響)
*/