SQL IF语句?

时间:2015-07-03 15:58:31

标签: sql sql-server sql-server-2008

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

该表的更简单版本如下

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

限制是在(TransDate)6/30/2012之前发生的任何事务都将返回完整的TransAmt。如果交易发生在2012年6月30日之后,则TransAmt的值必须返回为0.

我相信我需要使用CAST函数以及CASE函数,但我对这两种函数都没有经验。任何帮助或指导都将非常感激。

我也在使用SQL Server 2008。

3 个答案:

答案 0 :(得分:4)

您可以使用case

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

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

答案 1 :(得分:3)

您可以尝试case

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

SQLFiddle

答案 2 :(得分: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。