当前位置: 数据库>sqlserver
sql多表行转列、级联行转列示例代码
来源: 互联网 发布时间:2014-10-13
本文导语: 现有两表A,B A表存储商品点击日志,B表存储商品 要求显示当天所有商品点击量列表并附带总数并按天排序 代码如下: declare @sql varchar(2000) set @sql='select CONVERT(varchar(100), a.[Time], 23) as 时间,count(b.title) as 总数' select @sql =@sql+ ',sum...
现有两表A,B
A表存储商品点击日志,B表存储商品
要求显示当天所有商品点击量列表并附带总数并按天排序
declare @sql varchar(2000)
set @sql='select CONVERT(varchar(100), a.[Time], 23) as 时间,count(b.title) as 总数'
select @sql =@sql+ ',sum(case b.title when '''+Title+''' then 1 else 0 end) as '+'['+Title+']'
from (select distinct title from B) as B
set @sql=@sql+' from A as a left join B as b on a.AId=B.Aid
group by CONVERT(varchar(100), a.[Time], 23) order by CONVERT(varchar(100), a.[Time], 23) desc'
exec(@sql)
显示结果
时间 总数 商品1 商品2 商品3 2013-11-11 5 1 0 4 2013-11-10 13 2 11 1
A表存储商品点击日志,B表存储商品
要求显示当天所有商品点击量列表并附带总数并按天排序
代码如下:
declare @sql varchar(2000)
set @sql='select CONVERT(varchar(100), a.[Time], 23) as 时间,count(b.title) as 总数'
select @sql =@sql+ ',sum(case b.title when '''+Title+''' then 1 else 0 end) as '+'['+Title+']'
from (select distinct title from B) as B
set @sql=@sql+' from A as a left join B as b on a.AId=B.Aid
group by CONVERT(varchar(100), a.[Time], 23) order by CONVERT(varchar(100), a.[Time], 23) desc'
exec(@sql)
显示结果
时间 总数 商品1 商品2 商品3 2013-11-11 5 1 0 4 2013-11-10 13 2 11 1