2016-10-06 33 views
4

我有一個查詢,其中我試圖使用引用兩列的case語句。如何在case語句中引用多個列

數據:

用戶表:

ID_User  sUserName 
1    Test 
2    Test2 
3    Test3 

客戶表:

ID  last name  Redeemed  paid 
1   Cust1   10/1/16   9/15/16 
2   Cust2   9/16/16   9/14/16 
3   Cust3   10/4/16   9/30/16 
4   Cust4   10/5/16   10/1/16 

查詢:查詢

SELECT  Users.sUserName, Customers.LastName, CASE WHEN customers.Redeemed < '9/28/16' AND 
         customers.paid < '9/28/16' THEN '3' ELSE '4' END AS Amount 
FROM   Customers LEFT OUTER JOIN 
         Users ON Customers.lGreeterId = Users.ID_User 
WHERE  (Customers.Redeemed BETWEEN @startdate AND @enddate) 

輸出:

susername last name  amount 

Test  Cust1   4 
Test2  Cust2   4 
Test3  Cust3   4 
Test3  Cust4   4 

輸出應該是:

susername last name  amount 

Test  Cust1   3 
Test2  Cust2   3 
Test3  Cust3   4 
Test3  Cust4   4 

爲什麼我會得到他們所有的 「其他人」 的結果?如果贖回額度小於指定日期OR,我希望返回'3'。

付費和贖回都是數據類型datetime

回答

2

發表意見之後,嘗試使用不同的日期格式查詢

SELECT  Users.sUserName, Customers.LastName, 
      CASE 
      WHEN customers.Redeemed < '2016-09-28' THEN '3' 
      WHEN customers.paid < '2016-09-28' THEN '3' 
      ELSE '4' 
      END AS Amount 
FROM   Customers 
LEFT JOIN Users 
    ON Customers.lGreeterId = Users.ID_User 
WHERE  (Customers.Redeemed BETWEEN @startdate AND @enddate) 
+0

@jpw基於該輸出,這就是我的想法OP漸漸在.. – JohnHC

+0

我正在尋找AND,而不是OR - – Shmewnix

+0

@Shmewnix然後它是你的數據類型banjaxed – JohnHC