2015-07-03 159 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列入與否=。