我正在处理查询,部分查询必须根据事务发生的时间返回值。
该表的更简单版本如下
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。
答案 0 :(得分:4)
您可以使用case
:
select (case when TransDate < '2012-06-30' then TransAmt else 0 end)
. . .
我强烈建议您使用ISO标准日期格式(YYYY-MM-DD)。
答案 1 :(得分:3)
答案 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。