现在的位置: 首页 > 综合 > 正文

SQL 動態交叉表使用

2013年03月26日 ⁄ 综合 ⁄ 共 913字 ⁄ 字号 评论关闭

動態交叉表,就是行向的列不確定﹐根據查詢出來的內容來顯示的﹐

一些統計報表經常用到﹐而且效率很高.

如﹕

create table  #a (日期  datetime,  單號  varchar(10),貨名  varchar(10), 數量   decimal(18,2) ) 

 

insert into #a 

select  '2010-01-01',     'A001',       'A1',             '12'  

union all select  '2010-01-02',     'A002',       'B1'         ,    '12'  

union all select  '2010-01-01',     'A001',       'C1'          ,   '10'  

union all select  '2010-01-05',     'A005',       'A1'        ,       '5'  

 

-- select * from #a

 

/*  想把它显示成  

   

  日期               单号       A1   B1     C1   ...  

  2010-01-01          A001       12    0      10   ...  

  2010-01-02          A002       0     12      0...  

  2010-01-05          A005       5     0       0   ....  

 

*/

 

  Declare   @sql   varchar(8000)  

  set   @sql   =   'select   日期,單號 '  

  select   @sql   =   @sql   +   ',sum(case   貨名   when   ''' + 貨名 + '''   then 數量   else   0   end)   [' + 貨名 + ']'  

  from   ( select   distinct   貨名   from   #a )   as   a  

       

  select   @sql   =   @sql + '   from   #a   group   by   日期, 單號'  

 

  exec(@sql) 

 

【上篇】
【下篇】

抱歉!评论已关闭.