Я хотел бы измерить количество ID и ATTRIBUTE из исходной таблицы и представить данные, как показано в "Желаемом отчете" ниже. Я использую MySQL.
Источник:
ID | DATE | ATTRIBUTE
--------------------------------
1 | 2012-01-14 | XYZ
2 | 2012-03-14 |
3 | 2012-03-15 | XYZ
4 | 2012-04-24 | ABC
5 | 2012-04-10 |
6 | 2012-05-11 | ABC
Желаемые отчеты:
Счет атрибута
YEAR | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC
---------------------------------------------------------------------------
2010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2012 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
Количество идентификаторов
YEAR | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC
---------------------------------------------------------------------------
2010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2012 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
Процент завершен (количество атрибутов/количество идентификаторов)
YEAR | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC
---------------------------------------------------------------------------
2010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
2012 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
Вот код, который у меня есть. Благодарю! И также имейте в виду, мне нужно извлечь месяц из поля даты в мои данные, но не знаю, как это сделать. Спасибо.
SELECT YEAR(document_filing_date),MONTH(document_filing_date),COUNT(aif_id)
FROM (a_aif_remaining)
GROUP BY YEAR(document_filing_date),MONTH(document_filing_date);
Рекомендуемый ответ не работает!! Не знаю, почему, вот ошибка, которую я получаю:
"#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' COUNT(CASE WHEN MONTH(document_filing_date) = 1 THEN aif_id END) AS Jan, CO' at line 1"
SELECT YEAR(document_filing_date,
COUNT(CASE WHEN MONTH(document_filing_date) = 1 THEN aif_id END) AS Jan,
COUNT(CASE WHEN MONTH(document_filing_date) = 2 THEN aif_id END) AS Feb,
COUNT(CASE WHEN MONTH(document_filing_date) = 3 THEN aif_id END) AS Mar,
COUNT(CASE WHEN MONTH(document_filing_date) = 4 THEN aif_id END) AS Apr,
COUNT(CASE WHEN MONTH(document_filing_date) = 5 THEN aif_id END) AS May,
COUNT(CASE WHEN MONTH(document_filing_date) = 6 THEN aif_id END) AS Jun,
COUNT(CASE WHEN MONTH(document_filing_date) = 7 THEN aif_id END) AS Jul,
COUNT(CASE WHEN MONTH(document_filing_date) = 8 THEN aif_id END) AS Aug,
COUNT(CASE WHEN MONTH(document_filing_date) = 9 THEN aif_id END) AS Sep,
COUNT(CASE WHEN MONTH(document_filing_date) = 10 THEN aif_id END) AS Oct,
COUNT(CASE WHEN MONTH(document_filing_date) = 11 THEN aif_id END) AS Nov,
COUNT(CASE WHEN MONTH(document_filing_date) = 12 THEN aif_id END) AS Dec,
FROM a_aif_remaining
GROUP BY YEAR(document_filing_date);