• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
wood132
博客园    首页    新随笔    联系   管理    订阅  订阅

sql privot 实现行转列

表结构如下:

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

 

posted @ 2017-03-16 17:26  wood132  阅读(1093)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3