当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库动态交叉表的参考示例

MSSQL
SQL Server 2005数据库升级技巧
VB访问SQL Server数据库技术全揭密
sqlserver数据库中统计email类型的sql语句
SQL Server2005SQLCLR代码安全之权限
牢记!SQL Server数据库开发的二十一条军规
SQL中char和varchar的效率分析
让SQL Server为工作负载高峰提前做好准备
利用同义词简化SQL Server 2005开发
sql server日志文件总结及日志满的处理办法
SQL Server2005 SQLCLR代码之CLR安全
MDF文件在SQL Server数据库中恢复技术
SQL Server补丁安装常见问题详解
解决sqlserver2005中文版与vs2005的WebApplicationProject的冲突问题
SQL2000里的数据类型
数据库设计中的14个技巧
SQL Server快速参考
关于MSSQL数据库日志满的快速解决办法
一个Select出一个表中第N条记录的Sql代码
SQL server 数据库定时自动备份小技巧
SQLServer对文件内容全文检索查询

MSSQL 中的 SQL Server数据库动态交叉表的参考示例


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 78 ::
收藏到网摘: n/a

SQL Server数据库动态交叉表的参考示例:

--建立测试环境

以下为引用的内容:

set nocount on

create table test(model varchar(20),date int ,qty int)

insert into test select 'a','8','10'

insert into test select 'a','10','50'

insert into test select 'b','8','100'

insert into test select 'b','9','200'

insert into test select 'b','10','100'

insert into test select 'c','10','200'

insert into test select 'd','10','300'

insert into test select 'e','11','250'

insert into test select 'e','12','100'

insert into test select 'f','12','150'

go

--测试

declare @sql varchar(8000)

set @sql='select model,'

select @sql=@sql+'sum(case when

date='''+cast(date as varchar(10))+''' then qty else 0 end)

['+cast(date as varchar(10))+'],'

from (select distinct top 100 percent  date

 from test order by date)a

set @sql =left(@sql,len(@sql)-1)+' from test group by model'

exec(@sql)

--删除测试环境
drop table test
 set nocount off

/**//*
model                8           9           10          11          12
-------------------- ----------- ----------- ----------- ----------- -----------
a                    10          0           50          0           0
b                    100         200         100         0           0
c                    0           0           200         0           0
d                    0           0           300         0           0
e                    0           0           0           250         100
f                    0           0           0           0           150
*/