Я пишу SQL-запрос, который извлекает некоторую информацию за последние 4 недели. Я вижу две проблемы с моими результатами (см. Ниже).Даты заказа на 4 недели
Первая проблема заключается в том, что, когда я оглядываюсь назад на четыре недели, диапазон должен быть 10 августа - 6 сентября. Когда я заказываю «День месяца», даты в сентябре будут перенесены в верхнюю часть результатов когда они действительно должны быть в конце. Поэтому мои результаты должны начинаться с 10 (август) и заканчиваться в 6 (сентябрь).
Вторая проблема Я пропустил несколько случайных дат (3, 4, 13, 27).
Day of the Month Number of X
1 125
2 77
5 5
6 23
10 145
11 177
12 116
14 2
15 199
16 154
17 134
18 140
19 154
21 8
22 166
23 145
24 151
25 107
26 79
28 3
29 151
30 163
31 147
Вот общая версия моего запроса:
DECLARE @startDate datetime, @endDate datetime;
SET @startDate = dateadd(day, -28, GETDATE());
SET @endDate = dateadd(day, -1, GETDATE());
Select DATEPArt(dd, Time) AS 'Day of the Month', count(*) AS ' Number of X'
from SomeTable ST
where Time >= @startDate
AND Time < @endDate
group by DATEPArt(dd, Time)
order by 'Day of the Month'
Если вам не хватает данных о дате, возможно, вам придется создать и использовать таблицу календаря. –