Количество дат на конец месяца - PullRequest
0 голосов
/ 26 октября 2019

У меня есть таблица Employee с DOJ, и я хочу создать еще одну таблицу с запросом, которая будет содержать информацию о разнице DOJ и кумулятивном подсчете даты

SELECT
DISTINCT
CAST(A.DOJ AS datetime) AS 'Work Date',
SUM(CASE WHEN CAST(A.DOJ AS datetime)<=CAST(EOMONTH(A.DOJ) AS datetime) THEN 1 ELSE 0 END) as 'Actual'
FROM BiMob..ManpowerGrossCKDL A
GROUP BY CAST(A.DOJ AS datetime)

Employee Code   DOJ            Date        Count
1        10/24/2019         10/24/2019  3
2        10/24/2019         10/25/2019  5
3        10/24/2019         10/26/2019  6
4        10/25/2019         
5        10/25/2019             
6        10/26/2019

Желаемый вывод

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Используйте функцию накопленной суммы, используя оконные функции:

SELECT A.DOJ AS WorkDate,
       COUNT(*) as count_on_date,
       SUM(COUNT(*)) OVER (ORDER BY CAST(A.DOJ AS date)) as count_cumulative
FROM BiMob..ManpowerGrossCKDL A
GROUP BY A.DOJ
ORDER BY WorkDate;

Примечания:

  1. Я удалил CAST() на DOJ. Кажется, она уже представляет дату, и я не вижу причин для ее преобразования в datetime.
  2. Не используйте одинарные кавычки для псевдонимов столбцов. Они просто приведут к путанице. Наилучшим подходом является использование имен, которые не требуют кавычек.
  3. Я включил ORDER BY, потому что вы, вероятно, хотите получить результаты в порядке даты.
0 голосов
/ 26 октября 2019

Я думаю, это то, что вы ищете ... ВЫБЕРИТЕ CAST (A.DOJ AS datetime) AS 'Дата работы', Count (CAST (A.DOJ AS datetime) 'ActualCount' ИЗ BiMob..ManpowerGrossCKDL A GROUPBY CAST (A.DOJ AS datetime) ??? Если нет, пожалуйста, объясните точно, что требуется .. Спасибо.

...