Пожалуйста, рассмотрите следующие сценарии.
Создать таблицу:
IF OBJECT_ID('Colortable') IS NOT NULL
DROP TABLE ColorTable
CREATE TABLE Colortable (Color VARCHAR(32))
GO
Вставить некоторые значения:
SET NOCOUNT ON
INSERT Colortable
SELECT 'red'
INSERT Colortable
SELECT 'orange'
INSERT Colortable
SELECT 'blue'
INSERT Colortable
SELECT 'green'
GO
Создать мою переменную (которая станет параметром в SSRS) автоматически:
DECLARE @colors VARCHAR (1024)
SELECT @colors =
COALESCE(
@colors + '''' + ',' + '''', '') +
Color
FROM Colortable
Когда я использую «Select @colors», я получаю следующее:
'red','orange','blue','green'
Однако мои запросы не работают должным образом.
SELECT *
FROM colortable
WHERE Color IN ('red', 'orange', 'blue', 'green') -- Returns 4 rows.
SELECT *
FROM colortable
WHERE Color IN (@colors) -- Returns 0 Rows
Может кто-нибудь сказать мне, почему?Я пытаюсь сгенерировать строку значений, чтобы этот скрипт работал в SSRS и SSMS (или любом другом инструменте, который я использую).