日期:2014-05-19  浏览次数:20540 次

复杂查询
有表cza字段有
                  票号         客户全称   客户编码   此次应收   日期   操作员
  A200602010001         某公司       3002             20.00                          
  A200602010002         现款           3005             90.00          


想得到
                    某公司         张三         现款           ...  
20060101         30.00         301.00       10.00       ...
20060102         20.00         321.00       54.00     ...
20060103         95.00         66.00         0           ....
...


或者得到
客户全称     20060101       20060102         20060103       ....
某公司         80.00                   30.00               62.00                            
张三             63.00                   0.00                     9.00     ...
现款             62.00                   0.00                 106.00       ...

该如何写,谢谢
日期可由substring(票号,5,8)得到




------解决方案--------------------
第一种结果
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',sum(case 客户编码 when ' ' '+客户编码+ ' ' ' then 此次应收 else 0 end) as [ '+客户全称+ '] '
from cza
group by 客户编码,客户全称

exec( 'select substring(票号,2,8) as 日期 '+@sql+ ' from cza group by substring(票号,2,8) ')

第二种结果
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',sum(case substring(票号,2,8) when ' ' '+substring(票号,2,8)+ ' ' ' then 此次应收 else 0 end) as [ '+substring(票号,2,8)+ '] '
from cza
group by substring(票号,2,8)

exec( 'select 客户全称 '+@sql+ ' from cza group by 客户全称 ')