0
我有一個表像這樣:的SQL Server 2008 R2 - 選擇案例當日期之間日期
---------------------------------------------------------------
| UserID | Amount | PayDate |TransactionType| ...
----------------------------------------------------------------
| 1 | 140 | 2014-09-30 22:00:00.000| 7 |
| 2 | 230 | 2014-09-30 22:00:00.000| 7 |
| 1 | 120 | 2014-08-01 22:00:00.000| 7 |
| 2 | 135 | 2014-07-30 22:00:00.000| 7 |
| 1 | 120 | 2014-09-30 22:00:00.000| 4 |
----------------------------------------------------------------
我寫了下面的查詢,但它返回NULL,請在此查詢建議的是:
下面的日期宣佈29/09/2014和2014年1月10日之間
Declare
@dateStart datetime= CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETUTCDATE())+2),GETUTCDATE()),101),
@dateEnd datetime=(CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETUTCDATE())-1),GETUTCDATE()),101))
Select
MemberID,
case
when transactionType = 7
and (PayDate between @dateStart and @dateEnd) then Amount
End AS 'Outstanding Amount'
from
MemberPayment
我的輸出應該是:
| MemberID | OutStanding Amount|
---------------------------------
| 1 | 140 |
| 2 | 230 |
但查詢返回null,我做錯了什麼? CASE當DATE之間的DATE使用正確的SQL Server 2008 R2嗎?
PS:請注意我不希望將查詢更改爲具有WHERE條件。
預先感謝您的堆棧溢出家庭。
'(CreatedDate和@dateEnd之間CreatedDate)'應該是'(間CreatedDate @dateStart和@dateEnd)',不是嗎? – 2014-10-09 09:53:28
@MikhailTimofeev我的錯誤糾正了它,最初就像它的返回Null。 – 2014-10-09 09:57:56
當transactionType!= 7和(CreatedDate不在CreatedDate和@dateEnd之間)時,您需要有其他部分becoz,您將獲得NULL值! – 2014-10-09 10:00:32