SQL2005 中 pivot() 的使用 如何通过一个SQL语句变成竖表

本文介绍了一种将特定格式的数据表通过SQL语句转换为另一种格式的方法。具体地,原始表包含多列机器数据和对应的组别,目标表则按机器进行汇总,展示不同组别下的数值。文中提供了一个SQL实现示例,包括使用UNPIVOT和PIVOT操作完成数据转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现有一张表(没有现成的表,临时产生)格式如下:
机器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
(Orders
FOREmployeeIN
(机器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行受影响)
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值