DECLARE @sql VARCHAR(8000)  
DECLARE @str VARCHAR(8000)  
SELECT @sql = ISNULL(@sql , '') + N' sum(case when jhdanwei = N''' + jhdanwei + ''' then shuliang else 0 end) as [' +jhdanwei+N'|数量]' 
+N' , sum(case when jhdanwei = N''' + jhdanwei + N''' then ypjine else 0 end) as ['+jhdanwei+N'|金额]'+ N',' FROM (select distinct jhdanwei from Y_xskehu where diqu like '%'''+@日期1+'''%' and jhdanwei like '%'''+@日期2+'''%') t   
SET @sql = 'SELECT y_baseinfo.cpid , y_baseinfo.yppinming,'+ left(@sql , LEN(@sql) - 1 ) + N', 
ISNULL(sum(shuliang),0) as [合计|数量],
ISNULL(sum(ypjine),0) as [合计|金额]  
from (select cpid,yppinming,jinhuodanwei as jhdanwei,shuliang,ypjine from y_liushui where caozuobiaoshi<>''入库'' and convert(varchar(100),caozuoriqi,23)>=''2014-01-01'' and convert(varchar(100),caozuoriqi,23)<=''2014-05-01'') t  
right join y_baseinfo on t.cpid = y_baseinfo.cpid group by y_baseinfo.cpid,y_baseinfo.yppinming ' 
EXEC (@sql)
试试这个

解决方案 »

  1.   

    楼上的位置标错了,还有参数diqu,jhdanwei呢,参数也没有声明
      

  2.   

    2个问题,1,过程执行的时候没有插入到T_jiamengdiantongji 中,2如何将riqi1参数与日期2参数分别替换''2014-01-01'' 、''2014-05-01'' 
     
    IF EXISTS (SELECT name FROM sysobjects
             WHERE name = 'jieguo' AND type = 'P')
       DROP PROCEDURE jieguo
    go
    IF EXISTS(SELECT NAME FROM sysobjects AS o WHERE NAME = 'T_jiamengdiantongji') 
        DROP TABLE T_jiamengdiantongji  
    GOcreate procedure jieguo
    @地区 varchar(50),
    @单位 varchar(50) 
    --@日期1 datetime(),
    --@日期2 datetime()
    as
    DECLARE @sql VARCHAR(8000)  
    DECLARE @str VARCHAR(8000)  
    SELECT @sql = ISNULL(@sql , '') + N' sum(case when jhdanwei = N''' + jhdanwei + ''' then shuliang else 0 end) as [' +jhdanwei+N'|数量]' 
    +N' , sum(case when jhdanwei = N''' + jhdanwei + N''' then ypjine else 0 end) as ['+jhdanwei+N'|金额]'+ N',' FROM (select distinct jhdanwei from Y_xskehu where diqu like '%'''+@地区+'''%' and jhdanwei like '%'''+@单位+'''%') t   
    SET @sql = 'SELECT y_baseinfo.cpid , y_baseinfo.yppinming,'+ left(@sql , LEN(@sql) - 1 ) + N', 
    ISNULL(sum(shuliang),0) as [合计|数量],
    ISNULL(sum(ypjine),0) as [合计|金额]  
    from (select cpid,yppinming,jinhuodanwei as jhdanwei,shuliang,ypjine from y_liushui where caozuobiaoshi<>''产品入库'' and convert(varchar(100),caozuoriqi,23)>=''2014-01-01'' and convert(varchar(100),caozuoriqi,23)<=''2014-05-01'') t  
    right join y_baseinfo on t.cpid = y_baseinfo.cpid group by y_baseinfo.cpid,y_baseinfo.yppinming ' 
    --EXEC (@sql)set @str= 'select * into T_jiamengdiantongji from ('+@sql+') a ' 
    exec(@str) 
    select * from T_jiamengdiantongji 
    goEXECUTE  jieguo '北京','大兴店'