2010-12-13 1 views
0

У меня есть таблица с именем:SQL саз (держащее заявление СЛУЧАЯ в ИНЕКЕ)

Ext_Meeting_Status 

Это имеет поле

  1. Ext_Meeting_Status_ID
  2. TEXT

значениями являются:

EXT_Meeting_Status_ID Text 
1 Draft 
2 Published 
3 Cancelled 
4 Closed 

Как вернуть поле «Текст» «Опубликовано», если дата сегодня, иначе верните «Закрыть».

Я попытался с помощью:

select * from Ext_Meeting_Status 
where 
GETDATE() = CASE 
    WHEN (GETDATE() = '2010-12-13 10:02:31.560' ) 
    THEN (Ext_Meeting_Status_ID=2) 
    ELSE (Ext_Meeting_Status_ID=4) 
    END 

ответ

2
select * from Ext_Meeting_Status 
    where Ext_Meeting_Status_ID = 
    CASE WHEN (GETDATE() = '2010-12-13 10:02:31.560') 
    THEN (2)  
    ELSE (4) 
END 

Я считаю, что это должно работать ..

Еще одно замечание: Сравнивая текущую дату на точный уровень миллисекунды не может работать, как запрос не может получить выполнен в то время ...

Вы можете попробовать что-то вроде этого.

Select getdate(), * from #Temp 
    Where ID = Case when getdate() between '2010-12-13 05:21:08.240' and '2010-12-13 05:22:08.240' 
       Then 1 
       Else 2 
      End 
+0

Thanks mate - это звучит отлично – user532104

0

Я не думаю, что это возможно. Вы можете попробовать поместить все это в подвыборку и использовать там CASE.