dgnr Ответов: 3

В SQL Server, на котором основано условие на выбранный столбец случае


Как написать условие sql where на основе столбца, выбранного в операторе case.

Что я уже пробовал:

Я выбираю столбцы на основе оператора case и хочу фильтровать с помощью предложения where на основе выбранного столбца в операторе case.

Wendelius

Можете ли вы привести пример ситуации

dgnr

Выберите случай, когда UpdatedDate не null тогда UpdatedDate когда InsertedDate не null тогда InsertedDate еще VisitedDate конца
Из tbl_UserTracking
где [UpdatedDate/InsertedDate/VisitedDate(в зависимости от случая)] между датами 1 и 2

-- Где условие должно основываться на столбце, выбранном из оператора case.

3 Ответов

Рейтинг:
2

Wendelius

Если я правильно понимаю описание, вы можете использовать CASE в предложении where, например

...
WHERE date1 <= CASE WHEN ...
AND   date2 >= CASE WHEN ...
...
Но поскольку вам просто нужно первое ненулевое значение из разных полей, я считаю, что использование COALESCE (Transact-SQL)[^] было бы проще, что-то вроде
SELECT COALESCE(UpdatedDate, InsertedDate, VisitedDate)
FROM tbl_UserTracking
WHERE COALESCE(UpdatedDate, InsertedDate, VisitedDate) BETWEEN date1 AND date2


Рейтинг:
2

Advay Pandya

Вы можете использовать Функция isnull в этом случае.

Таким образом, ваш запрос будет выглядеть следующим образом:

Select case when UpdatedDate is not null then UpdatedDate when InsertedDate is not null then InsertedDate else VisitedDate end
From tbl_UserTracking
where Isnull(UpdatedDate,Isnull(InsertedDate,VisitedDate)) between date1 and date2


Пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы или вопросы, или если вы все еще сталкиваетесь с проблемой.


Рейтинг:
0

Kevin Marois

Видеть это[^]