2012-04-02 9 views
-1

where句に問題があります。私は2008年のデータのみを選択するはずですSQLで2008年だけのデータを選択する方法

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 

あなたは2008年のデータだけが含まれるように私のwhere節をどのように変更できるのか教えてください。

+0

問題を抱えていますか? – zerkms

+0

@zerkms私はエラーが発生しません私は370行のようになるはずですが、14000行のようになります – user1297398

+0

どうしたらうまくいかないのでしょうか?なぜすべての質問が調査から始まるべきなのですか、なぜ始めてのことから起こるのかを説明してみませんか? – zerkms

答えて

3

Duedateのデータ型はDATETIMEですか。そうであれば、年を指定するだけでなく、認定日付を提示したいと考えています。

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

はまだ同じ行に出ています – user1297398

+0

指定した範囲外の日付を持ついくつかの行のサンプルを表示できますか?私は、あなたのONステートメントで日付範囲フィルタを使用しているが、メインクエリのWHERE句ではないことに気付きました。私が提供したようにWHEREステートメントに入れてみてください。 – scwagner

+0

行をソートしない – user1297398

関連する問題