日期:2014-05-18  浏览次数:20516 次

请教各位前辈:生产领料报表格式的修改!
请教各位前辈:生产领料报表格式的修改!    
原领料表
      部门(D)     日期BILLDATE     货品(GD)     数量(QTY)
    安装部       2007-07-01           A001               100
    安装部       2007-07-02           A001               250
    安装部       2007-07-10           D001               120
    安装部       2007-07-11           D001                 70
    安装部       2007-07-25           E001                   8
    安装部       2007-07-28           E001                   7


1/要求修改后的表格式
  部门       货品   第一次领日期   第一次领数量       第二次领日期   第二次领数量       第三次领日期   第三次领数量
安装部     A001     2007-07-01       100                         2007-07-02       250
安装部     D001     2007-07-01       120                         2007-07-02         70
安装部     E001     2007-07-25           8                         2007-07-28           7


可能有第四、五次领料.

------解决方案--------------------
declare @sql varchar(8000)
SELECT @sql = 'select 部门(D),货品(GD) '
select @sql = @sql + ',max(case con when ' ' '+cast(con as varchar)+ ' ' ' then 日期BILLDATE end ) as ' '第 '+cast(con as varchar) + '次领日期 ' '
,sum(case con when ' ' '+cast(con as varchar)+ ' ' ' then 数量(QTY) else 0 end ) as ' '第 '+cast(con as varchar) + '次领数量 ' ' '
from (select distinct con from (select a.*,(select count(1)
from ta where 货品(GD)=a.货品(GD) and a.日期BILLDATE> 日期BILLDATE) con from ta a)a) as a
select @sql = @sql + ',sum(isnull(时间,0)) 时间 from (select a.*,(select count(1)
from ta where 货品(GD)=a.货品(GD) and a.日期BILLDATE> 日期BILLDATE) con from ta a)a group by 货品(GD) '

print(@sql)
exec(@sql)

你先print(@sql) 看看~没测试.可能和错.print出来修改一下