Несколько отсчетов в одном ряду с диапазоном - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь получить количество транзакций за неделю с указанием даты начала и окончания. Приведенный ниже запрос работает нормально в течение одного дня 2011-10-14

SELECT COUNT(operationId) AS trans
  FROM hwfg_t_Tracking 
  WHERE hitTime BETWEEN '2011-10-14 00:00:00' AND '2011-10-14 23:59:59.99'
GO

Как я могу получить счет операции, где hitTime между 14, 13, 12, 11, 10, 9, 8 (1 неделя) с помощью одного оператора SELECT. Как количество транзакций за 2011-10-14 в виде столбца, 2011-10-13 в качестве другого столбца и т. Д.

1 Ответ

2 голосов
/ 20 октября 2011

Попробуйте следующий запрос для одна строка в день в указанном диапазоне:

SELECT cast(hitTime AS date) AS mydate, COUNT(operationId) AS trans
FROM   hwfg_t_Tracking
WHERE  hitTime >= '2011-10-14 00:00:00' AND hitTime < '2011-10-21 00:00:00'
GROUP  BY cast(hitTime AS date)

Или, если хотите, все в один ряд :

SELECT COUNT(*) AS total_sum
      ,COUNT(CASE WHEN cast(dt As date) = '2011-10-14' THEN 1 ELSE NULL END) AS day14
      ,COUNT(CASE WHEN cast(dt As date) = '2011-10-15' THEN 1 ELSE NULL END) AS day15
      ,COUNT(CASE WHEN cast(dt As date) = '2011-10-16' THEN 1 ELSE NULL END) AS day16
-- etc.
FROM   hwfg_t_Tracking
WHERE  hitTime >= '2011-10-14 00:00:00' AND hitTime < '2011-10-21 00:00:00'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...