Использование CASE для возврата строки, если нет результатов из инструкции SELECT
Можно ли использовать CASE для возврата определенной строки, если в моей инструкции SELECT нет никаких результатов?
Пример:
DECLARE @accountnumber AS VARCHAR(10)
SET @accountnumber = 'account number to search'
SELECT
CASE
WHEN account IS NOT NULL
THEN 'We Have Records of this Customer'
WHEN account IS NULL
THEN 'We Do Not Have Records For This Customer'
END AS 'result'
FROM call_records
WHERE account = @accountnumber
GROUP BY account
Вышеупомянутое не работает, поскольку если номер учетной записи, которую я ищу, отсутствует в моей таблице журналов, тогда результатов не будет, и сообщение "У нас нет записей для этого клиента" никогда не будет реализовано.
Я могу сделать то, что я пытаюсь достичь, используя чистый T-SQL с командой PRINT, но я работаю с сторонним приложением, и результаты должны быть в форме таблицы (только для операторов SELECT).
Ответы
Ответ 1
Вы можете использовать EXISTS
:
SELECT
CASE
WHEN EXISTS(
SELECT 1 FROM call_records
WHERE account = @accountnumber
)
THEN 'We Have Records of this Customer'
ELSE 'We Do Not Have Records For This Customer'
END AS 'result';
Ответ 2
Try:
DECLARE @accountnumber AS VARCHAR(10)
SET @accountnumber = 'account number to search'
SELECT
CASE
WHEN account IS NOT NULL
THEN 'We Have Records of this Customer'
WHEN account IS NULL
THEN 'We Do Not Have Records For This Customer'
END AS 'result'
FROM (select 1 dummy) dummy
left join call_records ON account = @accountnumber
GROUP BY account