有表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)得到

解决方案 »

  1.   

    典型的行列转换应用:
    http://www.v2studio.cn/blog/gaojier/article.asp?id=27
      

  2.   

    第一种结果
    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 客户全称')
      

  3.   

    日期可由substring(票号,5,8)得到从数据看好像错了,应该是
    substring(票号,2,8)