交叉表的实现,
2004-11-29 13:40
621 查看
表如下:
A B
-------------
a 10
b 5
a 5
c 4
c 8
怎么用sql語句變成
a b c
---------
15 5 12
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'['+rtrim(A)+']=sum(case A when '''+rtrim(A)+''' then B else 0 end),'
from table1 group by A
set @sql=left(@sql,len(@sql)-1)
print @sql
exec('select '+@sql+ ' from table1')
create table jzlist(儿童 varchar(10),疫苗 varchar(10),预种日期 datetime)
insert into jzlist
select '武绍阳','卡介苗','2001-02-03'
union all select '武绍阳','糖 丸','2001-03-25'
union all select '武绍阳','乙 肝','2001-04-06'
union all select '宁 远','卡介苗','2002-08-03'
union all select '宁 远','糖 丸','2002-11-25'
union all select '宁 远','乙 肝','2002-12-23'
union all select '李小颖','卡介苗','2003-01-03'
union all select '李小颖','糖 丸','2003-04-26'
union all select '李小颖','乙 肝','2003-05-01'
go
--查询处理:
declare @s varchar(8000)
set @s=''
select @s=@s+',['+疫苗+']=max(case when 疫苗='''+疫苗+''' then convert(char(10),预种日期,120) end)'
from (select distinct 疫苗 from jzlist) aa
exec('select 儿童' +@s+' from jzlist group by 儿童')
go
A B
-------------
a 10
b 5
a 5
c 4
c 8
怎么用sql語句變成
a b c
---------
15 5 12
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'['+rtrim(A)+']=sum(case A when '''+rtrim(A)+''' then B else 0 end),'
from table1 group by A
set @sql=left(@sql,len(@sql)-1)
print @sql
exec('select '+@sql+ ' from table1')
create table jzlist(儿童 varchar(10),疫苗 varchar(10),预种日期 datetime)
insert into jzlist
select '武绍阳','卡介苗','2001-02-03'
union all select '武绍阳','糖 丸','2001-03-25'
union all select '武绍阳','乙 肝','2001-04-06'
union all select '宁 远','卡介苗','2002-08-03'
union all select '宁 远','糖 丸','2002-11-25'
union all select '宁 远','乙 肝','2002-12-23'
union all select '李小颖','卡介苗','2003-01-03'
union all select '李小颖','糖 丸','2003-04-26'
union all select '李小颖','乙 肝','2003-05-01'
go
--查询处理:
declare @s varchar(8000)
set @s=''
select @s=@s+',['+疫苗+']=max(case when 疫苗='''+疫苗+''' then convert(char(10),预种日期,120) end)'
from (select distinct 疫苗 from jzlist) aa
exec('select 儿童' +@s+' from jzlist group by 儿童')
go
相关文章推荐
- Oracle9i的JOB问题
- 对不起!我错了
- IE 无法播放flash的解决方法
- VB 二进制,八进制,十进制,十六进制转换
- IE 无法播放flash的解决方法
- VB PDU US2 编码
- 不错的网站,韩国的
- VB 手机号码编码程序
- [转]Drawstring in Canvas with Chinese (Siemens 55/57 series)
- 网页颜色图
- Mozilla系列——引子
- 3D游戏引擎设计与实现(18)
- 十个有趣的管理故事
- 新机器
- 总结一些经验(2)
- 脚又扭了
- 你喜欢吃面条么?
- 临沂市全国人大代表王庭江等人暴力冲击机场,殴打空乘人员(转载)
- 引起电脑自动重启的可能原因
- J2ME Game开发笔记 - 多机型移植经验谈