Запрос должен возвращать фиксированный набор столбцов. Нет синтаксиса, позволяющего возвращать некоторые столбцы только условно.
Но вы можете вызвать запрос по условию с помощью оператора IF
. Таким образом, вы можете сначала проверить, содержит ли строка, которую вы собираетесь получить, ненулевое значение в Cold
. Если это так, вы получаете Cold
с другими столбцами, если нет, вы опускаете его:
IF EXISTS (SELECT * FROM YourTable WHERE ItemID = @ItemID AND Cold <> 0)
SELECT
ItemID,
ItemName,
Cold
FROM YourTable
WHERE ItemID = @ItemID
ELSE
SELECT
ItemID,
ItemName
FROM YourTable
WHERE ItemID = @ItemID
То есть все определение хранимой процедуры будет выглядеть следующим образом:
CREATE PROCEDURE YourStoredProcedure
@ItemID int
AS
BEGIN
IF EXISTS (SELECT * FROM YourTable WHERE ItemID = @ItemID AND Cold <> 0)
SELECT
ItemID,
ItemName,
Cold
FROM YourTable
WHERE ItemID = @ItemID
ELSE
SELECT
ItemID,
ItemName
FROM YourTable
WHERE ItemID = @ItemID
END