如果我用这个结束我的查询:
+'SELECT
CPS.CalculatedFromText,
CPS.TreatmentOrdinal,
CPS.ProductID,
CPS.OptimizationGroupID,
CPS.CountCalculatedFromText,
CPS.CountCalculatedFromText/T.AllCalculatedFromText AS PercentCalculatedFromText,
CPS.CurrencyCode,
CPS.Origin,
CPS.Destination,'+
case when @passangers='Y' then 'CPS.Passangersgroup'
when @fareclass='Y' then 'CPS.Fareclass'
when @ispriorbooking='Y' then 'CPS.IsPriorBooking'
else '' end +'
INTO ##PercentCalculatedFromText
FROM ##CountCalculatedFromText AS CPS
INNER JOIN ##AllCalculatedFromText T ON T.ProductID = CPS.ProductID
AND T.OptimizationGroupID = CPS.OptimizationGroupID
AND T.CurrencyCode = CPS.CurrencyCode
AND T.Origin=CPS.Origin
AND T.Destination=CPS.Destination,'+
case when @passangers='Y' then ' AND T.Passangersgroup=CPS.Passangersgroup'
when @fareclass='Y' then 'AND T.Fareclass=CPS.Fareclass'
when @ispriorbooking='Y' then 'AND T.IsPriorBooking=CPS.IsPriorBooking'
else '' end
exec (@SQL2)它不工作,在‘’附近有错误的语法。但这一点:
+' SELECT
ProductID,
OptimizationGroupID,
SUM(CountCalculatedFromText) AS AllCalculatedFromText,
CurrencyCode,
Origin,
Destination,'+
case when @passangers='Y' then 'Passangersgroup'
when @fareclass='Y' then 'Fareclass'
when @ispriorbooking='Y' then 'IsPriorBooking'
else '' end +'
INTO ##AllCalculatedFromText
FROM ##CountCalculatedFromText AS cps2
GROUP BY ProductID,
OptimizationGroupID,
CurrencyCode,
Origin,
Destination,'+
case when @passangers='Y' then 'Passangersgroup'
when @fareclass='Y' then 'Fareclass'
when @ispriorbooking='Y' then 'IsPriorBooking'
else ''
end
exec (@SQL2)工作(我所做的就是把exec语句移到第一组代码上面)
我不明白我是怎么搞错的。
进一步的问题:如果动态sql代码以‘结尾,您可以运行exec语句吗?
当你可能以这样的东西结束时,你会怎么做:
case when @passangers='Y' then 'Passangersgroup'
when @fareclass='Y' then 'Fareclass'
when @ispriorbooking='Y' then 'IsPriorBooking'
else ''
+
'variable X'SQL SERVER 2014
发布于 2015-12-17 09:52:57
在第一个查询的Join条件中有额外的comma
........
'INNER JOIN ##AllCalculatedFromText T ON T.ProductID = CPS.ProductID
AND T.OptimizationGroupID = CPS.OptimizationGroupID
AND T.CurrencyCode = CPS.CurrencyCode
AND T.Origin=CPS.Origin
AND T.Destination=CPS.Destination' + --here
case when @passangers='Y' then ' AND T.Passangersgroup=CPS.Passangersgroup'
.........发布于 2015-12-17 09:53:50
在第二种情况下,字符串的开头也有一个空格。这可能会严重改变所发生的事情,这取决于字符串被附加到末尾的方式。如果它以新行结束,则没有区别,但如果它以前一个命令的最后一个字符或' end‘结束,则将以'ENDSELECT’结束。‘'END SELECT’,这将是非常不同的行为。
https://stackoverflow.com/questions/34325332
复制相似问题