行列转换
来源:互联网 发布:梁道长 知乎 编辑:程序博客网 时间:2024/04/30 03:30
表如下
ID 流程 日期
1 A 9-1
2 A 9-1
3 B 9-1
4 C 9-1
1 B 9-2
2 B 9-2
3 C 9-2
4 D 9-2
想得到的结果是
9-1 9-2
A 2 0
B 1 2
C 1 1
D 0 1
create table 表(ID int, 流程 varchar(10),日期 varchar(10))
insert into 表 values(1, 'A', '9-1')
insert into 表 values(2, 'A', '9-1')
insert into 表 values(3, 'B', '9-1')
insert into 表 values(4, 'C', '9-1')
insert into 表 values(1 , 'B', '9-2')
insert into 表 values(2 , 'B', '9-2')
insert into 表 values(3 , 'C', '9-2')
insert into 表 values(4 , 'D', '9-2')
go
--日期固定的写法
select 流程 ,
sum(case 日期 when '9-1' then 1 else 0 end) [9-1],
sum(case 日期 when '9-2' then 1 else 0 end) [9-2]
from 表
group by 流程
/*
流程 9-1 9-2
---------- ----------- -----------
A 2 0
B 1 2
C 1 1
D 0 1
(所影响的行数为 4 行)
*/
--日期不固定的写法
declare @sql varchar(8000)
set @sql = 'select 流程'
select @sql = @sql + ' , sum(case 日期 when ''' + 日期 + ''' then 1 else 0 end) [' + 日期 + ']'
from (select distinct 日期 from 表) as a
set @sql = @sql + ' from 表 group by 流程'
exec(@sql)
/*
流程 9-1 9-2
---------- ----------- -----------
A 2 0
B 1 2
C 1 1
D 0 1
(所影响的行数为 4 行)
*/
drop table 表
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- NUnit2.0详细使用方法
- E文积累_20070920
- 使用Communicator无法Share Desktop
- CQ----重写某个动作的操作权限
- 一招病毒必杀技-上网不用防火墙和杀毒软件
- 行列转换
- Microsoft Windows XP Embedded 技术常见问题
- C#的四个比较函数!
- SharePoint, 如何在列表项的只读界面DispForm.aspx控制字段的显示和隐藏
- 垂直搜索引擎深度分析
- 在.net开发中使用Log4Net组件
- JAVA.IO使用笔记
- C#中三种定时器对象的比较
- 在Delphi中开发使用多显示器的应用程序