2012-04-18 24 views
1

mondayからsundayまでの注文アイテムを取得したいのですが、土曜日と日曜日の注文をfridaysに追加したいのです。月曜〜金曜)、私はこのSQLを持って土曜日と日曜日のカウントを金曜日に追加して、土曜日と日曜日のカウントを加算して注文します。

はすでにその週の毎日の注文を示しています。あなたの入力のための

select DATENAME(weekday,orderdate) Day,CONVERT(VARCHAR(10), orderdate, 103) orderdate, 
COUNT(orderdate) Orders 
from Orders_tb 
where orderDate >= '2012-03-01 00:00:00.000' 
and orderDate <= '2012-03-31 00:00:00.000' 
group by datepart(day,orderDate),orderdate,DATENAME(weekday,orderdate) 

感謝を!

答えて

1

EDIT浄化した後。

週末を金曜日に変更する場合を使用します。派生テーブルは、受注日がいつでもどこでも同じ式を複製する必要性を避けるために採用されています。

select DATENAME(weekday,orderdate_trimmed) Day, 
     CONVERT(VARCHAR(10), orderdate_trimmed, 103) orderdate, 
     COUNT(orderdate_trimmed) Orders 
from 
(
    select *, 
     order_date - 
     case DATENAME(weekday,orderdate) 
       when 'Saturday' then 1 
       when 'Sunday' then 2 
       else 0 
      end 
     orderdate_trimmed 
    from Orders_tb 
) a 
where orderDate >= '2012-03-01 00:00:00.000' 
    and orderDate <= '2012-03-31 00:00:00.000' 
group by orderdate_trimmed 

あなただけのcase文を使用してマッチング日カウントかもしれません:

select COUNT(orderdate) TotalOrders, 
     COUNT(CASE WHEN DATENAME(weekday,orderdate) = 'Monday' then 1 end) Monday, 
     COUNT(CASE WHEN DATENAME(weekday,orderdate) = 'Tuesday' then 1 end) Tuesday, 
     COUNT(CASE WHEN DATENAME(weekday,orderdate) = 'Wednesday' then 1 end) Wednesday, 
     COUNT(CASE WHEN DATENAME(weekday,orderdate) = 'Thursday' then 1 end) Thursday, 
     COUNT(CASE WHEN DATENAME(weekday,orderdate) = 'Friday' 
        OR DATENAME(weekday,orderdate) = 'Saturday' 
        OR DATENAME(weekday,orderdate) = 'Sunday' 
        THEN 1 end) Friday 
from Orders_tb 
where orderDate >= '2012-03-01 00:00:00.000' 
and orderDate <= '2012-03-31 00:00:00.000' 

日付についての警告:日付、時間部分を含めることができるとして、このように比較することが賢明でしょう。

where orderDate >= '2012-03-01 00:00:00.000' 
and orderDate < '2012-04-01 00:00:00.000' 
+0

お返事ありがとうございました。私の探していたものが私に与えられましたが、週の特定の日のすべての注文を集計するのではなく、データをorderdateでグループ化したいと考えています。これを達成するためにクエリでgroup by句が必要です.....任意のアイデア? – user851971

+0

@ user851971実際に必要なのは、週末の日を金曜日に移動することです。 –

+0

@ user851971私の答えのEDITセクションをチェックしてください。 –

関連する問題