Привет всем, что я делаю несколько динамический запрос и у меня есть CASE в моих операторах выбора, например, так:
DECLARE @valueList varchar(8000)
DECLARE @pos int
DECLARE @len int
DECLARE @value varchar(8000)
SET @valueList = 'Description,hardwarePartNumber,poc,'
BEGIN
SET @len = CHARINDEX(',', @valueList, @pos+1) - @pos
SET @value = SUBSTRING(@valueList, @pos, @len)
SELECT
CAST(CASE WHEN @value = 'Description' THEN
BL.Description END AS varchar) AS 'Description',
CAST(CASE WHEN @value = 'hardwarePartNumber' THEN
BL.hardwarePartNumber END AS varchar) AS 'hardwarePartNumber',
CAST(CASE WHEN @value = 'poc' THEN
UT.lastFirstMiddle END AS int) AS 'poc',
CAST(CASE WHEN @value = 'quantity' THEN
BL.quantity END AS int) AS 'quantity',
etc...etc....
FROM
bLine AS BL
INNER JOIN usersTbl AS UT
ON BL.poc = UT.id
etc...etc....
Это работает нормально, но помещаетимена таблиц в результате, даже если у него не было имени таблицы в списке , разделенных запятыми *1009*.
Так что для приведенного выше примера результат будет выглядеть следующим образом:
Description |hardwarePartNumber |poc |quantity
--------------------------------------------------------
something here |568FHT |Bob Barker |NULL
another thing |GT43643 |Steve Jobs |NULL
Hey hey hey |DSTN345 |Fat Albert |NULL
Обратите внимание, как количество равно NULL , поскольку оно не было найдено в списке * 109 *, разделенных запятыми .Я хочу, чтобы он выглядел следующим образом:
Description |hardwarePartNumber |poc
-----------------------------------------------
something here |568FHT |Bob Barker
another thing |GT43643 |Steve Jobs
Hey hey hey |DSTN345 |Fat Albert
Так что, если его нет в списке через запятую , не отображайте таблицу в конечном запросе.