SQL数据库SQL语句实现行转列

  • Post author:
  • Post category:其他


最近负责的模块设计到统计,由于前期设计思路比较清晰,在统计这块,只需要从数据库中统计出相关数据库就可以了。

统计表:表头:文件类型、(所选年份)1-12月份

但是直接出去来的数据,无法直接在页面上展示:

[img]http://dl2.iteye.com/upload/attachment/0094/2339/cb692417-26d7-3603-9d08-753ffc7ac908.jpg[/img]

执行语句:

select count(*) as totalCount,archiveType,month([archiveDate]) as yuefen from gd_documents where status!=3 and convert(varchar(20),archiveDate,23) like '2014%' group by archiveType,month([archiveDate]) order by archiveType, month([archiveDate])

这样取出来的数据,还需要在后台进行处理,处理的方式会比较麻烦。我就在想,有没有办法可以直接把最后一列的月份直接转换成行,同时类型一样的文件直接合并成一行,同时这一行的统计数据作为哪一月份的数据?

pivot…for

SQL提供了这个个方法,可以实现行转列。

得到的结果将是如下:

[img]http://dl2.iteye.com/upload/attachment/0094/2442/86b7ca48-8910-3cc9-a420-37a9fd4a0a06.jpg[/img]

执行语句:

select * from (select archiveType,count(*) as totalCount,month([archiveDate]) as yuefen from gd_documents where status!=3 and convert(varchar(20),archiveDate,23) like '2014%' group by archiveType,month([archiveDate])) a
pivot (max(totalCount)
for yuefen
in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) b



版权声明:本文为ekian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。