读书人

复杂查询解决办法

发布时间: 2012-02-15 12:09:44 作者: rapoo

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

读书人网 >SQL Server

热点推荐