行列转换

原创 2007年09月20日 09:33:00

表如下
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 表

 

oracle行列转换

1、多行转换单列字符串 比如:   需要转换成: 1    b,z,x 2    c,x 写法1:        SELECT t.rank ,max(substr(sys_connect_by_p...
  • u011750989
  • u011750989
  • 2013年09月18日 10:10
  • 2110

sql实现行列转换

postgresql 现有一个表如(表一)想要转换为(表二) sql:select stuName as 姓名,chinese as 语文,math as 数学,english as 英文 from...
  • ECHOutopia
  • ECHOutopia
  • 2014年10月28日 11:02
  • 2856

Oracle 行列转换 总结

行列转换包括以下六种情况:  1. 列转行  2. 行转列  3. 多列转换成字符串  4. 多行转换成字符串  5. 字符串转换成多列  6. 字符串转换成多行 首先声明,有些例子需要如下10g及以...
  • tianlesoftware
  • tianlesoftware
  • 2009年10月20日 18:37
  • 34513

python行列转换

行列转换. 2014-11-01 15719 abc 111 2014-11-02 19541 hhh 222 2014-11-03 20331 ddd 333 2014-11-04 1877...
  • u012823211
  • u012823211
  • 2014年12月17日 14:18
  • 1764

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法、子查询的应用、decode函数的用法。希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同...
  • Eastmount
  • Eastmount
  • 2016年01月22日 05:03
  • 17116

Java版结果集行列倒置

从数据库里面取得的数据一般是以实体的方式返回。但是做报表的话,可能是从实体某个属性来显示,即所谓的行列倒置。所以有人写了行列倒置的SQL,这里也写个java实现的例子。属性是写死的。如果需要灵活点,换...
  • youjianbo_han_87
  • youjianbo_han_87
  • 2010年06月17日 14:42
  • 2739

锋利的SQL-SQL Server的表旋转(行列转换)

所谓表旋转,就是将表的行转换为列,或是将表的列转换为行,这是从SQL Server 2005开始提供的新技术。因此,如果希望使用此功能,需要将数据库的兼容级别设置为90。表旋转在某些方面也是解决了表的...
  • zhanghongju
  • zhanghongju
  • 2014年08月17日 18:37
  • 4925

在C#里面完成行列转换

目标效果实现流程图测试用的XML文件A01你12
  • gjysk
  • gjysk
  • 2010年06月19日 13:40
  • 1693

[MSSQL]一步一步教你利用case when 实现行列转换

根据业务需求写出大概的sql: select datepart(month,[Date]) 月份,users.[name] 业务员,count(users.[name]) 数量,t.[Descri...
  • david_520042
  • david_520042
  • 2012年02月01日 14:47
  • 989

mysql表数据行列转换方法

开发过程中,因为历史原因或性能原因,需要对表的列数据转为行数据,或行数据转换为列数据使用,本文将介绍mysql表数据行列转换的方法,提供完整演示例子及sql技巧。...
  • fdipzone
  • fdipzone
  • 2017年07月31日 21:56
  • 31561
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:行列转换
举报原因:
原因补充:

(最多只允许输入30个字)