现有一张表(没有现成的表,临时产生)格式如下:
机器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语句的含义最好!!
--测试环境
declare@ttable(zbvarchar(10),机器1int,机器2int,机器3int,机器4int,机器5int,机器6int)
insertinto@tselect'组别1',1,2,3,4,5,6
unionallselect'组别2',5,9,7,2,1,3
unionallselect'组别3',9,5,6,4,4,3
SELECT*FROM
(
SELECTEmployee,zb,Orders
FROM
(SELECTzb,机器1,机器2,机器3,机器4,机器5,机器6
FROM@t)p
UNPIVOT
(OrdersFOREmployeeIN
(机器1,机器2,机器3,机器4,机器5,机器6)
)ASunpvt
)T
PIVOT
(MAX(ORDERS)
forzbin([组别1],[组别2],[组别3])
)aspt
--结果
/**//*
Employee组别1组别2组别3
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
机器1159
机器2295
机器3376
机器4424
机器5514
机器6633
(6行受影响)
*/
本文介绍了一种将特定格式的数据表通过SQL语句转换为另一种格式的方法。具体地,原始表包含多列机器数据和对应的组别,目标表则按机器进行汇总,展示不同组别下的数值。文中提供了一个SQL实现示例,包括使用UNPIVOT和PIVOT操作完成数据转换的过程。
1491

被折叠的 条评论
为什么被折叠?



