我一直试图获得每个月子组数据的计数。问题表中有一个名为subgroup的列,还有sdate列,它保存插入日期。我想在几个月内获得所有子组计数。所以我可以看到每个子组在一个月内插入了多少数据。
到目前为止我有这个查询,这适用于1个子组。我想添加其他子组。
SELECT all_months.month "Month", COUNT(QUESTIONS.SUBGROUP) AS FI
FROM(SELECT LEVEL AS month FROM DUAL CONNECT BY LEVEL <= 12) all_months
LEFT OUTER JOIN QUESTIONS ON(all_months.month = EXTRACT(MONTH FROM SDATE) AND
SUBGROUP='FI' AND EXTRACT(YEAR FROM SDATE) = EXTRACT(YEAR FROM SYSDATE))
GROUP BY all_months.month ORDER BY "Month" ASC;
此查询返回:
这就是我想要的。
提前致谢。
答案 0 :(得分:2)
您可以使用条件聚合:
SELECT all_months.month "Month",
COUNT(CASE WHEN QUESTIONS.SUBGROUP = 'FI' THEN 1 END) AS FI,
COUNT(CASE WHEN QUESTIONS.SUBGROUP = 'G1' THEN 1 END) AS G1,
COUNT(CASE WHEN QUESTIONS.SUBGROUP = 'G2' THEN 1 END) AS G2,
COUNT(CASE WHEN QUESTIONS.SUBGROUP = 'G3' THEN 1 END) AS G3
FROM (
SELECT LEVEL AS month
FROM DUAL CONNECT BY LEVEL <= 12) all_months
LEFT OUTER JOIN QUESTIONS
ON(all_months.month = EXTRACT(MONTH FROM SDATE) AND
SUBGROUP IN ('FI', 'G1', 'G2', 'G3') AND
EXTRACT(YEAR FROM SDATE) = EXTRACT(YEAR FROM SYSDATE) ) AS t
GROUP BY all_months.month
ORDER BY "Month" ASC;