zoukankan      html  css  js  c++  java
  • SQL Server中的行列倒置技巧

    行列倒置在sql server中是一种很常见的技巧,在做应用系统的时候,经常需要做一些统计功能避免不了使用行列倒置这个技巧,我小小的做了一下总结:

    第一种:sql server 2000中使用case进行行列倒置

    create table RowCellConvertTest ( grade varchar(50), sex varchar(50), studentCount int ) go insert into RowCellConvertTest select '一年级','男',100 union all select '一年级','女',200 union all select '二年级','男',100 union all select '二年级','女',100 union all select '三年级','男',200 union all select '三年级','女',200 go

    select * from RowCellConvertTest go

    --利用SQL Server 2000的case将行转换成列 declare @sql varchar(max) set @sql = 'select grade' select @sql=@sql+ ',sum(case when sex = '''+sex+''' then studentCount else '''' end) as '''+sex+'''' from RowCellConvertTest group by sex --select @sql = substring(@sql,2,len(@sql)) --print @sql select  @sql = @sql +'from RowCellConvertTest group by grade' exec(@sql) go

    drop table RowCellConvertTest go

        

    效果:

        

        

    第二种:

    --利用SQL Server 2005新特性pivot将行转换成列 select grade,男,女 from ( select  studentCount, sex, grade from RowCellConvertTest ) p PIVOT ( sum (studentCount) FOR sex IN (男,女) ) AS pvt ORDER BY pvt.grade;

        

        

    附加:将列转换成行

        

    --将列转换成行 create table CellRowConvertTest ( grade varchar(50), 男 varchar(50), 女 varchar(50) ) go insert into CellRowConvertTest select '一年级',100,200 union all select '二年级',100,100 union all select '三年级',200,200 go

    select * from CellRowConvertTest go

    select grade,sex,studentCount from ( select grade,男,女 from CellRowConvertTest ) as p unpivot ( studentCount for sex in (男,女) ) as unpvt; go

    drop table CellRowConvertTest go

        

    效果:

  • 相关阅读:
    jQuery的平滑页面内锚定链接插件:$.smoothAnchor()
    分享10个超酷的jQuery动画教程
    jQuery技术在线小测试
    分享一个jQuery的小测验(Quiz)插件:jQuizzy
    (SqlServer)不公开存储过程sp_Msforeachtable与sp_Msforeachdb详解
    SQL Server实用操作小技巧集合
    如何加密和解密文件
    winform程序最小化到托盘后没法关机的解决方案
    SQL语句操作大全
    自定义事件
  • 原文地址:https://www.cnblogs.com/maodan/p/3296343.html
Copyright © 2011-2022 走看看