SQL语句,将数据按照厂商分组,然后按照月份横向显示。

2025-02-27 20:27:52
推荐回答(4个)
回答1:

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

回答2:

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)

回答3:

1楼正解

回答4:

写个存储过程,很容易解决
特别是数据量大的时候,很明显