2015-07-03 112 views
0

我正在处理查询,部分查询必须根据事务发生的时间返回值。SQL IF语句?

表的简化版本将如下

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

的限制是那个(TransDate)前发生的任何交易,2012年6月30日将返回全TransAmt。如果交易发生在2012年6月30日之后,TransAmt的值必须返回为0.

我相信我需要使用CAST函数以及CASE函数,但是我没有遇到任何函数。任何帮助或指导将不胜感激。

我也在使用SQL Server 2008。

回答

4

您可以使用case

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

我会强烈建议您使用ISO标准的日期格式(YYYY-MM- DD)。

3

您可以case尝试:

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

SQLFiddle

1

这里是CASE语句将是什么样子:

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

您可能要删除这取决于你是否希望2012-06-30列入与否=。