Сравните данные понедельника с предыдущими понедельниками в SQL Server - PullRequest
4 голосов
/ 29 сентября 2010

Я пытаюсь выяснить, как сравнить данные текущего дня с теми же данными за неделю назад, 2 недели и т. Д. Допустим, у меня есть таблица под названием «Порядок» с 2 столбцами:

Order table
-----------
OrderID int identity
OrderDate datetime

Если сегодня понедельник, я бы хотел сравнить количество заказов с сегодняшнего дня по предыдущим понедельникам за весь год.Возможно ли это с одним запросом SQL Server?Я использую SQL 2008, если это имеет значение.

Ответы [ 3 ]

1 голос
/ 30 сентября 2010
select CAST (OrderDate  as date) as [Date], COUNT(*)
from Orders
where OrderDate  > DATEADD(YEAR,-1, getdate()) 
     and DATEPART(DW,OrderDate ) = DATEPART(DW,GETDATE())
group by CAST (OrderDate  as date)
1 голос
/ 30 сентября 2010

Это дает вам количество заказов в понедельник по номеру недели:

select year(OrderDate) as Year, 
    DATEPART(WEEK, OrderDate) as Week, 
    COUNT(*) as MondayOrderCount
from Order
where DATEPART(WEEKDAY, OrderDate) = 2
group by year(OrderDate), DATEPART(WEEK, OrderDate)
order by Year, Week
1 голос
/ 29 сентября 2010

Попробуйте

SELECT [ColumnsYouWant]
FROM [OrderTable]
WHERE datepart(weekday, OrderDate) = datepart(weekday, getdate()) 
   AND OrderDate >= dateadd(yyyy, -1, getdate())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...