Если я заканчиваю мой запрос с этим:Пытаясь понять динамический синтаксис SQL более
+'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 заявление выше первого набора кода)
Я не понимая, как я получаю что-то здесь не так.
Другие вопросы: можете ли вы запустить инструкцию exec, если динамический код sql заканчивается символом '?
Что вы делаете, когда вы могли бы закончить с чем-то вроде:
case when @passangers='Y' then 'Passangersgroup'
when @fareclass='Y' then 'Fareclass'
when @ispriorbooking='Y' then 'IsPriorBooking'
else ''
+
'variable X'
SQL SERVER 2014
Какова длина переменной @ SQL2? Может быть, сгенерированный оператор усекается при назначении переменной. – Nathan
declare @ SQL2 varchar (max) –