-2
EXECUTE sp_executesqlを使用してスクリプトを実行すると、ピボットでパラメータを与える方法に関するクエリがあります。上記のクエリでMS SQL Serverのピボットクエリでparamterを使用したEXECUTE sp_executesqlを使用する
DECLARE @FactorText AS NVARCHAR(MAX)
DECLARE @RequestID AS NVARCHAR(MAX)
SELECT @FactorText = COALESCE(@FactorText + '], ', '') + CAST('[' + FactorText AS NVARCHAR(MAX))
FROM (
SELECT DISTINCT FactorText
FROM QuoteHODFCreditDebit
where RequestId = @RequestID AND AppliedValue!=0.00
) AS QuoteHODFCreditDebit
SET @FactorText = @FactorText + ']'
DECLARE @DynamicPIVOT AS NVARCHAR(MAX)
DECLARE @ParmDefinition AS NVARCHAR(MAX)
SELECT @DynamicPIVOT = 'SELECT @FactorText
FROM
(
SELECT case
when(appliedValue < 0) then quotename(convert(nvarchar(100), ABS(AppliedValue)),''('')
else CONVERT(nvarchar(100),AppliedValue)
end as AppliedValue, FactorText FROM
QuoteHODFCreditDebit where RequestId = @ResRequest
and appliedValue!=0.00
) CreditDebitFactor
PIVOT (
MAX(AppliedValue) FOR FactorText IN (@FactorText)
) Result;'
SET @ParmDefinition = N'@ResRequest NVARCHAR(MAX),@FactorText NVARCHAR(MAX)';
EXECUTE sp_executesql @DynamicPIVOT, @ParmDefinition, @ResRequest = @RequestID, @FactorText = @FactorText;
、@ResRequestパラメータは任意のエラーは発生しませんでしたが、パラメータとして@FactorTextは、エラーが発生しました。
エラー: '@FactorText'付近の構文が正しくありません。
このクエリを解決してください。
要件のサンプルがある場合は投稿できます。
すべてのSQLマジシャンに感謝します。
なぜすべてのことDBMSタグ:ここで
は、動的SQLでそれを行う方法ですか? – Aleksej
すべてのDBMSにタグを付けないように注意する必要があります。これは明らかにSQL Serverです。エラーの原因は、@FactorTextが動的SQLのスコープ外であるためです。 –
IN節または選択リストで変数を使用することはできません – Hogan