2014-02-03 4 views
0

Таким образом, у меня есть список элементов, упорядоченных по дате в двух разных категориях, при переключении категорий я иногда запускаю ошибку, которая не позволяет элементу перейти в правильное место размещения. Вещь, которая испортила запрос, - это то, что я хочу разместить в случае case/if, потому что это необходимо только в том случае, если есть элемент с той же датой, в любое другое время он выкидывает весь запрос. Вот что у меня есть, если я знаю, что этот случай не работает там, где он есть и как он работает, пожалуйста, со мной работайте.Использование case/if в предложении where SQL

SELECT CASE WHEN COUNT(*)=0 THEN (SELECT MAX(Rotate)+1 FROM Table1 WHERE Vol=1) 
ELSE MIN(o.Rotate) END as nRotate FROM Table1 o INNER JOIN Table2 s ON o.SID=s.ID 
WHERE s.Date >='7/30/2004' And s.ID<>100 And o.Vol=1 and 
Case s.DATE 
When '7/30/2004' then s.Sales>'Doe, Jane' 
End 
+0

я сделал исследование по этому вопросу, в течение около двух часов на самом деле и не нашел то, что я искал в ком ELSES вопросов. Если бы я был, я бы не спросил. Моя проблема заключалась в том, что я искал тяжелый случай, чтобы думать о чем-нибудь кроме этого. Спасибо, что пометили. –

ответ

2

Вам не нужно case:

WHERE s.Date >='2004-07-30' And s.ID <> 100 And o.Vol = 1 and 
     (s.date <> '2004-07-30' or s.Sales > 'Doe, Jane') 
+0

Спасибо, это сработало для моего одного запроса. Я проверю его в нескольких местах, чтобы убедиться, что я получаю ответ, который должен быть в каждом месте. Я отвечу на вопрос после того, как попробую. Я не свежий с SQL на данный момент, это было некоторое время. –

+0

Еще раз спасибо, он отлично работает по всем направлениям. Я действительно должен был подумать об этом, хотя ... Я был слишком застрял в предложении дела, чтобы придумать что-нибудь еще, кроме этого! С этого момента я это запомню. –

Смежные вопросы