Как создать отчетливое количество записей, которые хранятся по дням в месяц - PullRequest
0 голосов
/ 16 августа 2011

У меня есть таблица с несколькими записями «билета». Каждый билет хранится по дням (т.е. 2011-07-30 00: 00: 00.000). Я хотел бы подсчитывать уникальные записи в каждом месяце по году. Я использовал следующую инструкцию sql

SELECT DISTINCT
   YEAR(TICKETDATE) as TICKETYEAR,
   MONTH(TICKETDATE) AS TICKETMONTH,
   COUNT(DISTINCT TICKETID) AS DAILYTICKETCOUNT
FROM
   NAT_JOBLINE
GROUP BY
   YEAR(TICKETDATE),
   MONTH(TICKETDATE)
ORDER BY
   YEAR(TICKETDATE),
   MONTH(TICKETDATE)

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

Ответы [ 4 ]

0 голосов
/ 17 августа 2011

Из того, что я понимаю из ваших комментариев к решению Филиппа Келли:

SELECT TICKETDATE, COUNT(*) AS DAILYTICKETCOUNT
FROM  NAT_JOBLINE
GROUP BY TICKETDATE

должно сработать, но я предлагаю вам обновить ваш вопрос.

0 голосов
/ 17 августа 2011

Предполагая, что TICKETID не является первичным или уникальным ключом, но несколько раз появляется в таблице NAT_JOBLINE, этот запрос должен работать.Если он уникален (не встречается более чем в 1 строке на значение), вам нужно будет выбрать в другом столбце тот, который уникальным образом идентифицирует «сущность», которую вы хотите считать, если не каждый случай / экземпляр / ссылку наэта сущность.

(Как всегда трудно сказать, не работая с фактическими данными.)

0 голосов
/ 17 августа 2011

Я думаю, вам нужно удалить первый отчетливый.У вас уже есть группа.Если бы я был первым Distict, я бы не знал, что мне делать.

    SELECT 
      YEAR(TICKETDATE) as TICKETYEAR,
      MONTH(TICKETDATE) AS TICKETMONTH,
      COUNT(DISTINCT TICKETID) AS DAILYTICKETCOUNT
    FROM NAT_JOBLINE
    GROUP BY YEAR(TICKETDATE), MONTH(TICKETDATE) 
    ORDER BY YEAR(TICKETDATE), MONTH(TICKETDATE)
0 голосов
/ 16 августа 2011

Попробуйте объединить год и месяц в одно поле и сгруппировать это новое поле. Возможно, вам придется привести их к varchar, чтобы они не просто складывались вместе. Или .. вы могли бы умножить в течение года ...

SELECT    
   (YEAR(TICKETDATE) * 100) + MONTH(TICKETDATE),
   count(*) AS DAILYTICKETCOUNT
FROM    NAT_JOBLINE GROUP BY
 (YEAR(TICKETDATE) * 100) + MONTH(TICKETDATE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...