Подсчет по дню, подсчет за неделю, в сгруппированном операторе выбора - PullRequest
0 голосов
/ 21 июня 2011

Я пытаюсь подсчитать количество экземпляров статуса по текущему дню и текущей неделе, сгруппированных по городам.

(В таблице всего 3 столбца: Town, status, status_date)

SELECT 
     MAX(dbo.Clients.Town) AS Town, 
     CASE 
        WHEN MAX(datepart(wk, status_date)) = DATEPART(wk, getdate()) THEN COUNT(Town) 
        ELSE 0 
     END AS wkTotal,
     CASE 
        WHEN MAX(CONVERT(date, status_date, 106)) = CONVERT(date, getdate(), 106) THEN COUNT(Town) 
        ELSE 0 
     END AS dayTotal
FROM 
     dbo.Clients 
WHERE
     dbo.Clients.Status LIKE 'Status 1%'
     AND MONTH(GETDATE()) = MONTH(dbo.Clients.Status_date)
     AND YEAR(GETDATE())= YEAR(dbo.Clients.Status_date)
GROUP BY 
     dbo.Clients.Town
ORDER BY 
     dbo.Clients.Town

Этот код просто возвращает количество месяцев как для столбцов итогов за день, так и для итогов за неделю

Надеюсь, вы поможете.

1 Ответ

1 голос
/ 21 июня 2011

Я полагаю, вы делаете это:

SELECT dbo.Clients.Town AS Town, 
count(*) AS wkTotal, 
sum(CASE WHEN datepart(dayofyear, status_date) = DATEPART(dayofyear, getdate()) THEN 1 ELSE 0 END) AS dayTotal
FROM dbo.Clients 
WHERE dbo.Clients.Status LIKE 'Status 1%' AND 
datepart(week, GETDATE()) = datepart(week, dbo.Clients.Status_date)
AND YEAR(GETDATE())= YEAR(dbo.Clients.Status_date)
GROUP BY dbo.Clients.Town 
ORDER BY dbo.Clients.Town
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...