select TID,TName,count(TBNO) as '销售笔数',sum(case month(TBDate) when '1' then Total else 0 end) as '1月份'
,sum(case month(TBDate) when '2' then Total else 0 end) as '2月份'
,sum(case month(TBDate) when '3' then Total else 0 end) as '3月份'
,sum(case month(TBDate) when '4' then Total else 0 end) as '4月份'
,sum(case month(TBDate) when '5' then Total else 0 end) as '5月份'
,sum(case month(TBDate) when '6' then Total else 0 end) as '6月份'
,sum(case month(TBDate) when '7' then Total else 0 end) as '7月份'
,sum(case month(TBDate) when '8' then Total else 0 end) as '8月份'
,sum(case month(TBDate) when '9' then Total else 0 end) as '9月份'
,sum(case month(TBDate) when '10' then Total else 0 end) as '10月份'
,sum(case month(TBDate) when '11' then Total else 0 end) as '11月份'
,sum(case month(TBDate) when '12' then Total else 0 end) as '12月份' from Orders group by TID,TName
declare @sql nvarchar(max)=''
select
@sql=@sql
+',case when TBDate='''+convert(nvarchar,TBDate,111)+''' then TBNO else 0 end as '''+convert(nvarchar,TBDate,111)+'_TBNO'''
+',case when TBDate='''+convert(nvarchar,TBDate,111)+''' then total else 0 end as '''+convert(nvarchar,TBDate,111)+'_Total'''
from (select distinct TBDate from Orders) a
select @sql='select tid,tname'+@sql
+' from (select tid,max(tname) as tname,COUNT(tbno) as tbno,SUM(total) as total,TBDate from Orders group by TID,TBDate ) b order by TBDate'
exec(@sql)
1楼正解
写个存储过程,很容易解决
特别是数据量大的时候,很明显