Как считать билеты как DateWise - PullRequest
0 голосов
/ 03 января 2011

У меня есть запрос относительно моего отчета, формат отчета как под

**Date**           **Received**        **Closed**        **Pending**  
12/01/10              1000                 900               100
12/02/10              2000                1000              1000
12/03/10              1500                1300               200

В приведенном выше отчете показаны полученные, закрытые и ожидающие обращения в службу поддержки в качестве даты.

Как я могу создать динамический запрос SQL, чтобы показать результат выше?

  • Полученные билеты рассчитываются по SubmitedDate
  • Закрытые билеты рассчитываются по ClosedDate со статусом «Закрыто»
  • То же самое для ожидающих билетов, статус которых «ожидающий».

Пожалуйста, предоставьте мне идею или несколько примеров SQL-запросов.

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Использование:

  SELECT CONVERT(VARCHAR, t.submitteddate, 101) AS [date].
         COUNT(t.submitteddate) AS received
         SUM(CASE WHEN t.status = 'closed' THEN 1 ELSE 0 END) AS closed,
         SUM(CASE WHEN t.status = 'pending' THEN 1 ELSE 0 END) AS pending
    FROM YOUR_TABLE t
GROUP BY CONVERT(VARCHAR, t.submitteddate, 101)
ORDER BY [date]

Если вы хотите увидеть даты, когда ни одна из них не была продана, вам нужно будет составить таблицу дат, а затем СЛЕДУЕТ ПОДКЛЮЧИТЬ запрос выше к основанному на дате.

2 голосов
/ 03 января 2011

Запишите полученные, закрытые и ожидающие запросы по отдельности, а затем объедините их вместе следующим образом:

SELECT r.[Date], r.Count As Received, c.Count As Closed, p.Count AS Pending
FROM
   ( /* Received query here */ ) r
FULL JOIN 
   ( /* Closed query here */) c ON c.[Date] = r.[Date]
FULL JOIN
   ( /* Pending query here */) p ON p.[Date] = r.[Date]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...