#sql #sql-server
#sql #sql-сервер
Вопрос:
Недавно я создал небольшое приложение, которое отправляет электронное письмо. В настоящее время я пытаюсь отправить электронное письмо всякий раз, когда последняя запись в базе данных SSMS старше 1 часа.
Я использую оператор case в SQL-запросе, чтобы попытаться вернуть запрос 1 или 0.
Как мне выполнить SQL-запрос?
Я надеялся на ввод, подобный:
CASE
WHEN condition1 THEN result1
ELSE result
END;
Заранее благодарю вас.
Комментарии:
1. Пожалуйста, предоставьте образцы данных и желаемые результаты.
2.
CASE
выражение; SQL Server не допускаетCase
Switch
операторов () .3. @Larnu да, это так.
4.Нет, это не так, @JeffUK . T-SQL никогда не поддерживал
Case
операторы, только выражения.5. Есть ли причина, по которой вы не могли просто добавить предложение WHERE, чтобы найти записи, соответствующие вашему условию?
...where DATEDIFF(hour, startdate, enddate) > 1
Ответ №1:
У вас может быть оператор select, который проверяет, найдена ли какая-либо запись, а затем возвращает 1, иначе 0.
SELECT CASE
WHEN EXISTS (SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1) THEN 1
ELSE 0 END AS NewRecordsFound
Или
SELECT IIF(EXISTS(SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1),1,0) AS NewRecordsFound
Или
IF EXISTS(SELECT * FROM TableName WHERE datediff(hh,datecolumn,getdate())>1)
BEGIN
SELECT 1 AS NewRecordsFound
END
ELSE
BEGIN
SELECT 0 AS NewRecordsFound
END