я следующий запросSQL запроса имя столбца недействителен
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 ('[email protected]+')
ORDER BY PartnerName, Category, [Description]'
END
exec sp_executesql @sql, N'@category VARCHAR(50) ', @category
Я хочу показать данные из следующих запросов по категориям, которые имели значения: монитор, LCD и рабочий стол. И я вещь проблема в «WHERE blablabla»
У меня было 2 условия, которые я попробовал.
первое условие:
Из кода показал, когда я объявляю @category со значениями его получения ошибки
«Неверное имя колонки монитор»
«Неверное имя столбца ЖК»
«Недопустимое имя столбца« Рабочий стол »
второе условие:
я сделать изменения для
where category IN ('''[email protected]+''')
Это работает, если я только добавить одно значение, но если я объявляю @category с более чем одно значение его не показывает ничего, но никакой ошибки
Если я поместил значения непосредственно на «WHERE blablabla», он отлично работает.
Рабочее состояние:
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 + ')
Благодаря
возможно дубликат [Параметрирование предложения SQL IN?] (Http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-clause) – Pondlife