首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

复杂查询解决办法

2012-02-15 
复杂查询有表cza字段有票号客户全称客户编码此次应收日期操作员A200602010001某公司300220.00A20060201000

复杂查询
有表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 客户全称 ')

热点排行