2012-04-02 26 views
-1

我在where子句中有問題。我應該只選擇2008年的數據如何從2008年的SQL中僅選擇數據

SELECT 
    Count(S.salesOrderID),p.SalesOrderNumber,p.Duedate, status = 
     CASE when p.status =1 THEN 'In Process' 
      when p.status =2 THEN ' Approved' 
      when p.status =3 THEN ' Backordered' 
      when p.status =4 THEN ' Rejected' 
      when p.status =5 THEN ' Shipped' 
     END 
FROM 
    Sales.SalesOrderHeader p 
INNER JOIN 
    Sales.SalesOrderDetail s ON p.SalesOrderID = s.SalesOrderID AND 
    P.DueDate >= '2008' AND p.DueDate < '2009' 
GROUP BY 
    p.SalesOrderNumber, p.Duedate, status 
ORDER BY 
    SalesOrderNumber DESC 

你能告訴我如何改變我的where子句,所以只有2008年的數據可以包括在內?

+0

你有什麼錯誤嗎? – zerkms 2012-04-02 02:37:06

+0

@zerkms我沒有得到任何錯誤我得到像14000行,當我只得到像370行 – user1297398 2012-04-02 02:38:36

+0

所以我們應該如何猜測什麼是錯的?爲什麼每個問題都應該從調查開始,爲什麼你不解釋從一開始就會發生什麼? – zerkms 2012-04-02 02:42:58

回答

3

Duedate的數據類型是否爲DATETIME?如果是這樣,那麼你會想提出合格的日期,而不僅僅是幾年:

WHERE p.Duedate >= '2008-01-01' and p.Duedate < '2009-01-01' 
+0

仍然會出現相同的行 – user1297398 2012-04-02 02:43:04

+0

您可以顯示一些您獲得的日期超出指定範圍的行的示例嗎?我注意到您在ON語句中使用日期範圍過濾器,但不在主查詢的WHERE子句中使用日期範圍過濾器。嘗試將它們放入像我提供的WHERE語句中。 – scwagner 2012-04-02 03:00:55

+0

i cnt複製行 – user1297398 2012-04-02 03:16:16

相關問題