我有一个带时间戳的日志列表,我想要一个返回 12 个 bool 值的查询,说明某个月是否包含任何日志,对于一年中的每个月(从一月开始),即:
(True, False, False, True, False ..., True)
我目前有以下查询,它将显示包含数据的所有月份:
SELECT DISTINCT(EXTRACT(MONTH FROM logdate)) AS month
FROM mytable
WHERE EXTRACT(YEAR FROM logdate) = '2009'
ORDER BY month;
其输出是包含数据的月份列表,例如:
(1, 2, 5, 6, 12)
我只是想不出下一步 - 任何指示将不胜感激。
我正在使用 PostgreSQL v8.4.2。谢谢。
最佳答案
使用 generate_series():
SELECT
CASE
WHEN EXTRACT(MONTH FROM logdate) IS NULL THEN false
ELSE true
END,
y AS month
FROM
mytable RIGHT JOIN generate_series(1,12) AS x(y) ON EXTRACT(month FROM logdate) = y
WHERE
EXTRACT(YEAR FROM logdate) = '2009';
关于sql - 判断月份是否包含条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500572/