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'
お返事ありがとうございました。私の探していたものが私に与えられましたが、週の特定の日のすべての注文を集計するのではなく、データをorderdateでグループ化したいと考えています。これを達成するためにクエリでgroup by句が必要です.....任意のアイデア? – user851971
@ user851971実際に必要なのは、週末の日を金曜日に移動することです。 –
@ user851971私の答えのEDITセクションをチェックしてください。 –