sql privot 实现行转列

本文介绍了一种使用SQL进行数据透视的方法,将原始表中的数据按照指定条件进行汇总和转换,以便更好地进行数据分析。

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

表结构如下:

RefID    HRMS    Name    InsuranceMoney    InsuranceName
fb2bdee8-e4c9-4470-8e7f-14550d3212f7    2    李四    350.00    医疗保险
f9e2135c-3c25-4e85-93a1-33c4d509e9fd    1    张三    300.00    医疗保险
37eac6a6-0c90-4d59-95d5-4a5fefa2ea5b    3    王二    300.00    医疗保险
0f0fec55-0041-403e-b6e9-59b645e2d500    3    王二    150.00    养老保险
90424d7a-bfbf-41e5-b86d-d7af67aa9db1    2    李四    250.00    养老保险
c3431ed8-a923-4638-8fd0-e1353d0154ab    1    张三    200.00    养老保险
c3431ed8-a923-4638-8fd0-e1353d0154ac    2    李四    5.00    医疗保险

表数据下载

 

要求转换为:

HRMS    Name    医疗保险    养老保险
2    李四    355.00    250.00
3    王二    300.00    150.00
1    张三    300.00    200.00

 

sql 如下:

SELECT *
FROM (
    SELECT
 HRMS
 ,Name
 ,InsuranceMoney
 ,InsuranceName
FROM dbo.Insurances
) t
PIVOT (
    SUM(InsuranceMoney)
    FOR InsuranceName IN ([医疗保险], [养老保险])
) p

 

转载于:https://www.cnblogs.com/rockywood/p/6560648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值