SQL - Одна таблица с двумя столбцами дат. Считай и присоединяйся - PullRequest
0 голосов
/ 05 августа 2020

У меня есть таблица (vOKPI_Tickets), в которой есть следующие столбцы:

| CreationDate | CompletionDate |

Я хотел бы подсчитать количество в каждом из этих столбцов и сгруппировать их по дате. По завершении он должен выглядеть примерно так:

| Дата | Создано графом | Подсчет завершен |

Я могу получить каждое из подсчетов индивидуально, выполнив что-то вроде этого:

SELECT COUNT(TicketId)
FROM vOKPI_Tickets
GROUP BY CreationDate

и

SELECT COUNT(TicketId)
FROM vOKPI_Tickets
GROUP BY CreationDate

Как я могу объединить вывод в одну таблицу? Я также должен отметить, что это станет View.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 05 августа 2020

Простой общий c подход:

select
coalesce(crte.creationdate, cmpl.CompletionDate) as theDate,
crte.cnt as created,
cmpl.cnt as completed
from
(select creationdate, count (*) as cnt from vOKPI_Tickets where creationdate  is not null group by creationdate) crte
full join
(select CompletionDate, count (*) as cnt from vOKPI_Tickets where CompletionDate  is not null group by CompletionDate) cmpl
on crte.creationdate  = cmpl.CompletionDate  
1 голос
/ 05 августа 2020

Вы можете развернуть и агрегировать. Общий метод:

select dte, sum(created), sum(completed)
from ((select creationdate as dte, 1 as created, 0 as completed
       from vOKPI_Tickets
      ) union all
      (select completed as dte, 0  created, 1 as completed
       from vOKPI_Tickets
      ) 
     ) t
group by dte;
  
0 голосов
/ 05 августа 2020

На SQL сервере вы можете использовать cross apply для этого:

select d.dt, sum(d.is_completed) count_created, sum(d.is_completed) count_completed
from vokpi_tickets t
cross apply (values (creationdate, 1, 0), (completion_date, 0, 1)) as d(dt, is_created, is_completed)
where d.dt is not null
group by d.dt
...