У меня есть таблица, где я должен ежемесячно восстанавливать количество групп, которые будут брать уроки, эта проверка должна выполняться каждые три месяца, конечный результат должен быть таким:Count не возвращает 0
Gruppi A nel mese di Luglio 20
Gruppi A nel mese di Agosto 18
Gruppi A nel mese di Settembre 5
Gruppi B nel mese di Luglio 8
Gruppi B nel mese di Agosto 0
Gruppi B nel mese di Setembre 12
Это мой запрос:
WITH T AS (
SELECT GROUPS.GROUP_NAME || ' nel mese di ' || TO_CHAR(REVIEW.REVIEW_DATE, 'Month') AS FORMAT_MONTH,
COUNT(*) AS COUNT_GROUPS
FROM REVIEW
INNER JOIN GROUPS ON REVIEW.ID = GROUPS.ID
WHERE GROUP_TYPE = 1
AND GROUP_MASTER = 50
AND TO_CHAR(REVIEW.REVIEW_DATE, 'YYYYMM')
IN ((SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 0), 'YYYYMM') FROM DUAL),
(SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 1), 'YYYYMM') FROM DUAL), (SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 2), 'YYYYMM') FROM DUAL))
GROUP BY GROUPS.GROUP_NAME || ' nel mese di ' || TO_CHAR(REVIEW.REVIEW_DATE, 'Month')
UNION ALL
SELECT GROUPS.GROUP_NAME || ' nel mese di ' || TO_CHAR(REVIEW.REVIEW_DATE, 'Month') AS FORMAT_MONTH,
COUNT(*) AS COUNT_GROUPS
FROM REVIEW
INNER JOIN GROUPS ON REVIEW.ID = GROUPS.ID
WHERE GROUP_TYPE = 1
AND GROUP_MASTER = 50
AND TO_CHAR(REVIEW.REVIEW_DATE, 'YYYYMM') IN ((SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 0), 'YYYYMM') FROM DUAL),
(SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 1), 'YYYYMM') FROM DUAL),
(SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20160701', 'YYYYMMDD'), 2), 'YYYYMM') FROM DUAL))
GROUP BY GROUPS.GROUP_NAME || ' nel mese di ' || TO_CHAR(REVIEW.REVIEW_DATE, 'Month')
)
SELECT *
FROM T
UNION ALL
SELECT 'Gruppi nel periodo', SUM(COUNT_GROUPS)
FROM T;
Unrelated, Но: 'select' для' значений в' не является необходимым. Вы можете упростить это: 'IN (TO_CHAR (ADD_MONTHS (TO_DATE ('20160701', 'YYYYMMDD'), 0), 'YYYYMM'), ...'). Это выражение может быть упрощено до простого: 'где review.review_date между датой '2016-07-01' и датой add_months ('2016-07-01', 2)' –
Пожалуйста, разместите уменьшенный набор данных с желаемым результатом , Здесь мы знаем, что вам нужно, но не там, откуда вы начинаете. Кроме того, в чем проблема с вашим запросом? Это ошибка? неправильный результат? [mcve] может быть очень полезным – Aleksej
Вместо того, чтобы давать мне «Gruppi nel mese di Agosto 0», он не отображает эту строку, так как там, где не соответствует результатам – Chrix1387