日期:2014-05-17  浏览次数:20594 次

求一条行列转换的sql语句
需要用到两张表
表a
id aname
1   文具
2   书包
3   尺子

表b
id  briqi   bname
1  20130701  文具
2  20130701  文具
3  20130701  书包
4  20130702  文具

需要取某个时间段内每天的各种类销售量
也就是需要得到如下结果
日期      文具 书包 尺子 合计
20130701  2   1    0   3
20130702  1   0    0   1

单个表的我会做行列转换,但那样就没有尺子列了,
我想要种类的全集 该如何做呢?


 

------解决方案--------------------
这个是我刚写的一个,也是别人昨天的问题,满足你的2个表

 declare @strsql varchar(1000)
 set @strsql='select a.GroupName '
 select @strsql=@strsql+',sum(case convert(char(10),inputtime,120) when '''+b.inputtime+''' then isnull(GroupCount,0) else 0 end)['+b.inputtime+']' 
 from (select distinct(convert(char(10),inputtime,120)) as inputtime  from t2  )  b
 set @strsql=@strsql+' from t1 as a,t2 as c where a.GroupId=c.GroupId Group by a.GroupName '
 
 print(@strsql)
 exec(@strsql)