進銷存中的複雜報表常見的動態行轉列技巧

 

1.半成品結果集。it

 

2.最終效果:select

 

3.SQLim

 

--動態行轉列
 DECLARE @subSql nvarchar(MAX)
SET @subSql = 'select Row_Number() over(order by agentbigarea,agentname) as RowNumber            ,
AgentBigArea as AgentBigArea,AgentName'
SELECT @subSql = @subSql + ',SUM(case wrdname+goodattrvalgroup when ''' + wrdname+goodattrvalgroup+ ''' then
 quantity else 0 end) as [' + wrdname+'|'+goodattrvalgroup + '|銷售]            ,SUM(case wrdname+goodattrvalgroup
  when ''' + wrdname+goodattrvalgroup+ ''' then quantity1 else 0 end) as [' + wrdname+'|'+goodattrvalgroup + '|庫存]           
   ,SUM(case wrdname+goodattrvalgroup when ''' + wrdname+goodattrvalgroup+ ''' then quantity2 else 0 end) as
    [' + wrdname+'|'+goodattrvalgroup + '|週轉]'
    
FROM
  (SELECT TOP 10000 wrdname,
                    goodattrvalgroup
   FROM #tempEnd
   GROUP BY goodattrvalgroup,
            wrdname
   ORDER BY goodattrvalgroup,
            Max(wrdid)) AS a
SET @subSql = @subSql + ' from #tempEnd group by AgentBigArea,agentname' print @subSql EXEC (@subSql)img

相關文章
相關標籤/搜索