读书人

语法有关问题

发布时间: 2012-06-07 15:05:14 作者: rapoo

语法问题
declare @sql varchar(8000)
set @sql='select plevel'
select @sql=@sql+',['+dd+']=sum(case convert(varchar(10),workdate,120) when '''+dd+''' then Times*qty else 0 end)'
from (select distinct dd=convert(varchar(10),workdate,120) from tb) ss
set @sql=@sql+' from tb group by plevel'
exec(@sql)
我把上面的换成了下面的:
declare @sql varchar(8000)
set @sql='select plevel'
select @sql=@sql+',['+dd+']=sum(case convert(varchar(10),workdate,120) when '''+dd+''' then Times*qty else 0 end)'
from (select distinct dd=convert(varchar(10),workdate,120) from (Select a.* from(Select plevel,workdate,qty*times as ff from tb group by plevel,workdate,qty*times ) a where ff>500)) ss
set @sql=@sql+' from tb group by plevel'
exec(@sql)
就提示Incorrect syntax near ')'
我就是把倒数第三行的表tb换成了(Select a.* from(Select plevel,workdate,qty*times as ff from tb group by plevel,workdate,qty*times ) a where ff>500),这句语句执行没有问题的。为什么放在这里就出错了?
请高手帮忙!谢谢!

[解决办法]

SQL code
declare @sql varchar(8000)set @sql='select plevel'select     @sql=@sql+        ',['+dd+']=sum(                        case convert(varchar(10),workdate,120)                             when '''+dd+'''                             then Times*qty                             else 0                         end                        )'from (    select distinct         dd=convert(varchar(10),workdate,120)         from (                Select                     a.*                 from                (                    Select                         plevel,                        workdate,                        qty*times as ff                     from tb                     group by plevel,workdate,qty*times                 ) a               )tmp        where ff>500          ) ssset @sql=@sql+' from tb group by plevel'exec(@sql)
[解决办法]
SQL code
declare @sql varchar(8000)set @sql='select plevel'select @sql=@sql+',['+dd+']=sum(case convert(varchar(10),workdate,120) when '''+dd+''' then Times*qty else 0 end)'from (    select distinct dd=convert(varchar(10),workdate,120)     from     (        Select a.*         from        (            Select plevel,workdate,qty*times as ff             from tb             group by plevel,workdate,qty*times         ) a         where ff>500    ) ss) aaset @sql=@sql+' from tb group by plevel' 

读书人网 >SQL Server

热点推荐