2015-04-24 4 views
-3

enter image description hereSQL, где положение с многократным условием

В моей таблице базы данных у меня есть какое-то значение, как на изображении выше.

Я хочу проверить некоторые условия в моей статье where.

Я хочу, чтобы проверить по URL

  1. DemoOrPaid=PAID and ValidUpto=NULL => then Return 1 2. DemoOrPaid=PAID and ValidUpto=(NOT NULL) then compare with current date and check if ValidUpto<=GETDATE() => then Return 1
  2. DemoOrPaid=DEMO and ValidUpto=NULL => then Return 0
  3. DemoOrPaid=DEMO and ValidUpto=(NOT NULL) then compare with current date and check if ValidUpto<=GETDATE() => then Return 0
+0

Что вернуть в 2. и 4. если соответствующее условие не выполняется? –

ответ

0

Если вы хотите вернуть некоторые вычисляемый столбец, то вы можете использовать что-то вроде это:

select 
    case 
     when DemoOrPaid = 'PAID' and ValidUpto is null then 1 
     when DemoOrPaid = 'PAID' and ValidUpto is not null and ValidUpto <= getdate() then 1 
     when DemoOrPaid = 'DEMO' and ValidUpto is null then 1 
     else 0 
    end 

На самом деле немного неясно, что вы хотите вернуть в случаях, не охваченных вашими условиями.

0

Следующие возвращают все строки, которые соответствуют.

select * from Table where 
(DemoOrPaid='PAID' and ValidUpto is NULL) or 
(DemoOrPaid='PAID' and ValidUpto is NOT NULL and ValidUpto<=GETDATE()) or 
(DemoOrPaid='DEMO' and ValidUpto is NULL) or 
(DemoOrPaid='DEMO' and ValidUpto is NULL and ValidUpto<=GETDATE()) 
+0

я пишу \t Declare @iCount, как INT \t множества @ iCount = (выберите COUNT (company_id) из tbl_AdminCompanyMaster где URL = LTRIM (RTRIM (@URL)) \t \t \t \t \t и \t \t \t \t \t (DemoOrPaid = 'ПЛАТНЫЕ' и ValidUpto является NULL) или \t \t \t \t \t (DemoOrPaid = 'ПЛАТНЫЕ' и ValidUpto является NOT NULL и ValidUpto <= GETDATE()) или \t \t \t \t \t (DemoOrPaid = 'ДЕМО' и ValidUpto это значение NULL) или \t \t \t \t \t (DemoOrPaid = 'ДЕМО' и ValidUpto является NULL, и ValidUpto <= GETDATE()) \t \t \t \t \t \t \t \t \t \t) \t \t \t \t print (@iCount) Я передаю ** RAGA ** в качестве параметра ** @ URL **, но он возвращает 2, но в соответствии с данными он должен вернуть 1 – matrixwebtech

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