SQL Server 2005 处理交叉表
来源:互联网 发布:matlab剔除为0的数据 编辑:程序博客网 时间:2024/05/16 11:13
日期 时间 售货金额
2006-01-02 早上 50
2006-01-02 中午 20
2006-01-02 晚上 30
2006-01-02 零晨 40
2006-01-03 早上 40
2006-01-03 中午 60
2006-01-03 晚上 50
2006-01-03 零晨 50
2006-01-04 早上 80
2006-01-04 中午 60
2006-01-04 晚上 20
2006-01-04 零晨 40
...........................
............................
...........................
.........
能否用行转列的方式在进行数据查询中将上面数据的查询结果显示为:
日期 早上 中午 晚上 零晨 金额小计
2006-01-02 50 20 30 40 140
2006-01-03 40 60 50 50 200
2006-01-04 80 60 30 20 190
..........
..........
--SQL 20005中的处理方式:
--测试环境
Create table T(日期 datetime,时间 varchar(20),售货金额 int)
insert into T select '2006-01-02','早上',50
union all select '2006-01-02','中午',20
union all select '2006-01-02','晚上',30
union all select '2006-01-02','零晨',40
union all select '2006-01-03','早上',40
union all select '2006-01-03','中午',60
union all select '2006-01-03','晚上',50
union all select '2006-01-03','零晨',50
union all select '2006-01-04','早上',80
union all select '2006-01-04','中午',60
union all select '2006-01-04','晚上',20
union all select '2006-01-04','零晨',40
--查询
select * ,金额小计=(select sum(售货金额) from T where 日期=PT.日期 ) from T as TAB
PIVOT
( max(售货金额)
for 时间 in ([早上],[中午],[晚上],[零晨])
) as PT
--结果
/*
日期 早上 中午 晚上 零晨 金额小计
----------------------- ----------- ----------- ----------- ----------- -----------
2006-01-02 00:00:00.000 50 20 30 40 140
2006-01-03 00:00:00.000 40 60 50 50 200
2006-01-04 00:00:00.000 80 60 20 40 200
(3 行受影响)
*/
--删除测试环境
Drop Table T
-----------------------------------------------------------------------------动态交叉表
DECLARE @S VARCHAR(MAX)
SET @S=''
SELECT @S=@S+',['+时间+']' FROM T
GROUP BY 时间
SET @S=STUFF(@S,1,1,'')
EXEC('
select 日期,'+@S+',金额小计=(select sum(售货金额) from T where 日期=PT.日期 ) from T as TAB
PIVOT
( max(售货金额)
for 时间 in ('+@S+')
) as PT
')
- SQL Server 2005 处理交叉表
- SQL Server 2005 处理交叉表
- SQL Server 2005 处理交叉表
- SQL Server 2005 处理交叉表
- SQL server 交叉表
- sql server 2000 2005 交叉表查询
- [SQL]交叉表的处理
- Sql Server交叉表的用法
- Sql Server 2008的动态交叉表
- sql server交叉表存储过程
- SQL SERVER 交叉报表
- SQL Server 自动交叉报表
- SQL SERVER 2005 异常处理
- SQL Server数据库动态交叉表的参考示例
- Sql Server 生成数据透视表(交叉分析数据)
- SQL Server 2005中处理表分区问题
- SQL Server 2005中处理表分区问题
- SQL Server 2005中处理表分区问题
- 发布DocX的第一个版本
- IT技术与应用,到底孰轻孰重~~~
- 句子都写不通了?
- Oracle Logminer的安装方法
- IMS网络融合的基础
- SQL Server 2005 处理交叉表
- 比较字符串是否相等
- 学软件是先学编程还是先学基础理论
- SQL Server 2005 列转行
- 在ASP.NET1.0/2.0里使用DIV层元素弹出窗体
- 隐藏
- 合并列值(包含sql2000及sql2005方法)
- 我的股票池
- Log4j配置文件