Ну, в SQL Server есть функция с именем DATEPART
, которая также может дать вам WEEK
часть даты - что-то вроде:
SELECT
DATEPART(WEEK, DATE_DT)
Country AS CITZ,
COUNT(Subject_Key) AS PEOPLE
FROM dbo.MyTable
GROUP BY
Country, DATEPART(WEEK, DATE_DT)
Это дает вам номер недели (но невсе же from_date и to_date).
Или вы можете оставить свой базовый запрос в покое, но сохранить результаты во временной таблице:
CREATE TABLE dbo.tmp_Results(FromDT CHAR(10), ToDT CHAR(10),
Country VARCHAR(100), Count INT)
, а затем просто вставить свои результаты в эту таблицу длякаждый прогон:
INSERT INTO dbo.tmp_Results(FromDT, ToDT, Country, Count)
SELECT
CONVERT(CHAR(10),@FROM_DT,101) AS FROM_DT,
CONVERT(CHAR(10),DATEADD(DAY,-1,@TO_DT),101) AS TO_DT,
COUNTRY AS CITZ,
COUNT(SUBJECT_KEY) AS PEOPLE
FROM MYTALE
WHERE DATE_DT >=@FROM_DT
AND DATE_DT <@TO_DT
GROUP BY COUNTRY
и затем выберите из этой временной таблицы в конце:
SELECT * FROM dbo.tmp_Results