我有一个语句是select tbl_cgwpmx.采购单号,产品类别,产品名称,该品进货总额 from tbl_cgwpmx,tbl_cgd where (tbl_cgd.采购日期 between '2003-05-01' and '2003-06-05') and tbl_cgd.采购单号=tbl_cgwpmx.采购单号 and tbl_cgd.供应单位='科威公司'
union
select tbl_cgd.采购单号,'小计','',sum(该品进货总额) from tbl_cgwpmx,tbl_cgd where (tbl_cgd.采购日期 between '2003-05-01' and '2003-06-05') and tbl_cgd.采购单号=tbl_cgwpmx.采购单号 and tbl_cgd.供应单位='科威公司' group by tbl_cgd.采购单号 
union 
select '合计','','',sum(该品进货总额) from tbl_cgwpmx ,tbl_cgd where (tbl_cgd.采购日期 between '2003-05-01' and '2003-06-05') and tbl_cgd.采购单号=tbl_cgwpmx.采购单号 and tbl_cgd.供应单位='科威公司'
在存储过程中,因为每个where 条件都是一样的,那么我就想将他们设为一个变量@str,然后在程序中将变量赋给 他,可是我在过程中,把where条件用@str替换,就提示union
附近有语法错误,我想问怎么才能实现变量替换呀??请指教

解决方案 »

  1.   

    declare @sql varchar(20000)
    select @sql = 'where (tbl_cgd.采购日期 between ''2003-05-01'' and ''2003-06-05'') and tbl_cgd.采购单号=tbl_cgwpmx.采购单号 and tbl_cgd.供应单位=''科威公司'' '
    exec (' select tbl_cgwpmx.采购单号,产品类别,产品名称,该品进货总额 from tbl_cgwpmx,tbl_cgd ' + @sql + ' union ...)注意引号/空格和回车