2015-07-03 4 views
0

Я работаю над запросом, и часть запроса должна возвращать значения в зависимости от того, когда произошла транзакция.Оператор SQL IF?

Более простой вариант таблицы будет выглядеть следующим образом

TransDate | TransAmt  
-------------------- 
6/1/2012 | 10 
7/5/2012 | 15 
6/1/2013 | 15 
7/1/2013 | 15 

Ограничение в том, что любые сделки, которые имели место ранее (TransDate) 6/30/2012 бы вернуть полную TransAmt. Если транзакция произошла после 30/30/2012, значение TransAmt должно быть возвращено как 0.

Я считаю, что мне нужно будет использовать функцию CAST, а также функцию CASE, но я не испытываю ни одной из функций. Любая помощь или руководство будут высоко оценены.

Я также использую SQL Server 2008.

ответ

4

Вы можете использовать case:

select (case when TransDate < '2012-06-30' then TransAmt else 0 end) 
. . . 

Я настоятельно рекомендую вам использовать стандартные форматы даты ISO (YYYY-мм- DD).

3

Вы можете попробовать с case:

select case when TransDate < '6/30/2012' then TransAmt else 0 end 
from tbl 

SQLFiddle

1

Вот что заявление СЛУЧАЙ будет выглядеть следующим образом:

SELECT 
    (CASE WHEN TransDate <= '2012-06-30' THEN TransAmt 
      WHEN TransDate > '2012-06-30' THEN 0 
     END) 
FROM Table_1 

Вы можете захотеть удалить = в зависимости от того, хотите ли вы или нет 2012-06-30 быть включены или нет.

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