我正在处理一个查询,部分查询必须根据事务发生的时间返回值。
表的一个更简单的版本如下
TransDate | TransAmt
--------------------
6/1/2012 | 10
7/5/2012 | 15
6/1/2013 | 15
7/1/2013 | 15限制是在(TransDate) 6/30/2012之前发生的任何事务都将返回完整的TransAmt。如果事务发生在6/30/2012之后,则必须将TransAmt的值返回为0。
我相信我需要使用CAST功能以及CASE功能,但我对这两种功能都没有经验。如有任何帮助或指导,将不胜感激。
我也在使用Server 2008。
发布于 2015-07-03 16:01:59
您可以使用case
select (case when TransDate < '2012-06-30' then TransAmt else 0 end)
. . .我强烈鼓励您使用ISO标准日期格式(YYYY)。
发布于 2015-07-03 16:00:56
您可以尝试使用case
select case when TransDate < '6/30/2012' then TransAmt else 0 end
from tbl SQLFiddle
发布于 2015-07-03 16:03:36
以下是CASE语句的样子:
SELECT
(CASE WHEN TransDate <= '2012-06-30' THEN TransAmt
WHEN TransDate > '2012-06-30' THEN 0
END)
FROM Table_1您可能希望删除=,这取决于您是否希望包含2012-06-30。
https://stackoverflow.com/questions/31210640
复制相似问题