架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1575|回复: 0
打印 上一主题 下一主题

[资料] sqlserver 横表转纵表(行转列)

[复制链接]
跳转到指定楼层
楼主
发表于 2018-4-16 17:36:19 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
题目:纵表转横表

解决方案:


sql语句:

  1. SELECT TOP 1000 [Id]
  2.       ,[Name]
  3.       ,[Department]
  4.       ,[Price]
  5.       ,[Count]
  6.       ,[Money]
  7.   FROM [Test]

  8. -- 第一步:创建一个零时表
  9. -- SELECT Department, name, SUM(Money) as sumMoney into #test2 from Test GROUP BY Department, name

  10. select * from #test2

  11. -- 第二步:行转列,纵表转横表

  12. -- 第一种方式
  13. select * from #test2 pivot (sum(sumMoney) for Department in(销售一部,销售二部,销售三部)) #test2

  14. -- 第二种方式
  15.         select name,
  16.         sum (case Department when '销售一部' then sumMoney else 0 end) as 销售一部,
  17.         sum (case Department when '销售二部' then sumMoney else 0 end) as 销售二部,
  18.         sum (case Department when '销售三部' then sumMoney else 0 end) as 销售三部
  19.         from #test2
  20.         group by name

复制代码
遗留问题:
使用pivot后 in 里面不能子查询。


横表转纵表:
横表结构 Table_B   -->    纵表结构 Table_A

方法一:union all


  1. select 姓名,'语文' as 课程,语文 as 成绩 from Table_B union all
  2. select 姓名,'数学' as 课程,数学 as 成绩 from Table_B union all
  3. select 姓名,'英语' as 课程,英语 as 成绩 from Table_B
  4. order by 姓名,课程 desc

复制代码
方法二:使用unpivot
  1. select 姓名,课程,成绩 from Table_B
  2. unpivot
  3. (成绩 for 课程 in ([语文],[数学],英语)) 临时表
复制代码












上一篇:【Hyper-V】与【VirtualBox】【VMware】冲突的解决方法
下一篇:IIS6 MVC4 路由失效 无法访问的解决方法
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

关闭

站点通知上一条 /1 下一条

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2018-10-18 06:24

Powered by Discuz! X3.4

© 2001-2014 Comsenz Inc.

快速回复 返回顶部 返回列表