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

在存储过程中我取到两组数据放到临时表中怎么处理能得到我想要的结果
A表
cCusCode  cInvCode cdate quantity
01019     p012dw   第一周  1600.00
01019     sa213a   第一周  1500.00
01029     dsad12   第二周  1200.00
01001     dsad12   第二周  1200.00
B表
cCusCode  cCusName cInvCode cInvName  cInvCName
01001      A公司      dsad12   dsad12    成品

我想要的结果是
cCusCode  cCusName cInvCode cInvName  cInvCName  第一周   第二周     第三周
01001      A公司      dsad12   dsad12    成品        0      1200.00  500.00

------解决方案--------------------

declare @sql varchar(8000)
  
set @sql = ''
 
select @sql=@sql +',['+a.cdate+']=isnull(SUM(CASE a.cdate WHEN '''+a.cdate+''' THEN rtrim(a.iQuantity) ELSE '''' END),'''')'
from #temp_table a group by a.cdate

set @sql = 'select b.cCusCode 客户编码,b.cCusName 客户名称,b.cInvCode 存货编码,b.cInvName 存货名称,b.cInvCName 存货分类,b.cSTName 销售方式 '+@sql+', sum(a.iQuantity) 销售订单数
from #temp_table a
join #temp_table_2 b on a.cCusCode=b.cCusCode and a.cInvCode=b.cInvCode
group by a.cCusCode,b.cCusCode,b.cCusName,a.cInvCode,b.cInvCode,b.cInvName,b.cInvCName,b.cSTName '

exec(@sql)