bbirajdar Ответов: 1

Как применить условный оператор в предложении SQL WHERE


Всем Привет
Я столкнулся с проблемой применения условного "если" в предложении where SQL-запроса.
Вот этот вопрос. Я удалил ненужные соединения, имена столбцов и несколько условий в предложении WHERE, чтобы сделать его читаемым.
SELECT TransactionId, TransactionDate , ProcessingDate FROM TransactionDetails
WHERE TransactionId in (2,3,9) AND ...AND ..

Теперь мне нужно выбрать записи из таблицы TransactionDetails с другими идентификаторами транзакций 14 & 15 только в том случае, если TransactionDate <> ProcessingDate для этой конкретной записи.

Что я пробовал:

Попробовал использовать IF ELSE - но он работал только с переменными. Я хочу применить это условие к столбцам дат из таблицы.

select  * from transactionDetails
WHERE OrderID in (400376, 400379)
AND
    IF TransactionDate <> ProcessingDate
        TransactionId in (2,3,9,14,15)
    ELSE
        TransactionId in (2,3,9)


Я получаю две ошибки, как -
Неправильный синтаксис около ключевого слова 'если'.
Неверный синтаксис рядом с 'TransactionId'.

Пожалуйста, прокомментируйте, если вы хотите, чтобы я улучшил свой вопрос

Member 10894637

И как справиться с условием, когда у меня есть только условие "если" и нет никакого "еще", т. е. мне нужно фильтровать записи только тогда, когда оно не равно нулю.

выберите * из списка transactionDetails
Где OrderID in (400376, 400379)
И
Если TransactionDate не равен NULL
ИД транзакции в (2,3,9,14,15)

1 Ответов

Рейтинг:
9

OriginalGriff

Попробуй:

select  * from transactionDetails
WHERE OrderID in (400376, 400379)
AND
    ((TransactionDate <> ProcessingDate AND TransactionId in (2,3,9,14,15)
    OR
     (TransactionDate = ProcessingDate AND TransactionId in (2,3,9)))


bbirajdar

Это сработало .. Спасибо ОГ ..+5.. Жаль, что я не мог проголосовать за +50.. Ты спас меня ..Я уже некоторое время ломаю себе голову над этим вопросом...

OriginalGriff

ЭМ...СА? :ржать:

bbirajdar

Извиняюсь..Моя ошибка.. Это была опечатка.. Путался между двумя великими именами на КП :)

Maciej Los

+5!

Umesh AP

Спасибо, полезно и для меня тоже.....

Member 12762716

Прекрасно!
Это сработало для меня ;)

Member 13741334

В любом случае я получаю один и тот же результат.. Вот мой пункт где

Где к. код= @ИД
И ((@istest =1 и C.имя ('Павел', 'тростник','откровенный', 'САПР'))
Или (@istest =0 и c.name IN IN ('paul', 'reed','cad')))

RedDk

Возможно, это я здесь запутался ... но вы можете попробовать опубликовать этот вопрос как вопрос в QA. В нынешнем виде это комментарий, на который никто не ответит, пока он не будет поставлен на надлежащее место.

"ОБЕСПЕЧЕНИЕ КАЧЕСТВА" ... это и есть "быстрые ответы" ...