私は次の質問をしました
DECLARE @category VARCHAR(50) = 'monitor,LCD,Desktop'
DECLARE @sql nvarchar(4000)
IF @category IS NOT NULL
BEGIN
SELECT @sql = 'SELECT *,
CASE
WHEN Aging > 90 THEN ''> 90''
ELSE
CASE
WHEN Aging > 60 THEN ''61-90''
ELSE
CASE
WHEN Aging > 30 THEN ''31-60''
ELSE ''<=30''
END
END
END AS AgingCat, Pct*100 AS Percentage FROM dbo.vwPartnerProductAging
where category IN ('+@category+')
ORDER BY PartnerName, Category, [Description]'
END
exec sp_executesql @sql, N'@category VARCHAR(50) ', @category
次のクエリのデータを、モニター、LCD、デスクトップの値を持つカテゴリ別に表示したいと思います。そして、私は「WHEREblablabla」で問題を抱えています
私が試した2つの状態がありました。
最初の条件:
値を使用して@categoryを宣言すると表示されるコードから、エラーが発生します
「無効な列名モニター」
「無効な列名LCD」
「無効な列名デスクトップ」
2番目の条件:
変更します
where category IN ('''+@category+''')
値を1つだけ追加すると機能しますが、@ categoryを複数の値で宣言すると、何も表示されず、エラーは表示されません。
「WHEREblablabla」に直接値を入力すると、正常に機能します。
作業条件:
DECLARE @category VARCHAR(50) = 'monitor,LCD,Desktop'
DECLARE @sql nvarchar(4000)
IF @category IS NOT NULL
BEGIN
SELECT @sql = 'SELECT *,
CASE
WHEN Aging > 90 THEN ''> 90''
ELSE
CASE
WHEN Aging > 60 THEN ''61-90''
ELSE
CASE
WHEN Aging > 30 THEN ''31-60''
ELSE ''<=30''
END
END
END AS AgingCat, Pct*100 AS Percentage FROM dbo.vwPartnerProductAging
where category IN (''Monitor'',''LCD'',''Desktop'')
ORDER BY PartnerName, Category, [Description]'
END
exec sp_executesql @sql, N'@category VARCHAR(50) ', @category
変更したかった:
where category IN (''Monitor'',''LCD'',''Desktop'')
に:
where category IN ( ' + @category + ' )
ありがとう