16
2018
11

SQL数据行转列

 代码如下:

 /******有表 ##shenji 结构如下**********/
 create table ##shenji(
docdate datetime,
warehouse varchar(50),
eqty decimal(19,6),
esum decimal(19,6)
)

 

/******前面用各显神通的方法获取上述结构的数据源**********/


declare @sql varchar(max)

select @sql=isnull(@sql+',','')+'sum(case docdate when '''+convert(char(10),docdate,120)+''' then eqty  else 0 end )
['+convert(char(10),docdate,120)+'数量],'
+'sum(case docdate when '''+convert(char(10),docdate,120)+''' then eSum  else 0 end )
['+convert(char(10),docdate,120)+'金额]'
from (select distinct docdate from ##shenji) as a
/*这里的@sql获取了行转列的表头的SQL 包含了聚合函数*/
set @sql='select   warehouse 仓库,'+@sql+'from ##shenji group by warehouse'

exec (@sql)

 

数据源:

 

得到结果:

« 上一篇下一篇 »