【发布时间】:2021-02-15 08:04:47
【问题描述】:
假设如下表:
CREATE TABLE assumption ( datetime_1 TIMESTAMP, datetime_2 TIMESTAMP, datetime_3 TIMESTAMP);
现在我想知道在任何行或列组合中设置一个月的总次数,只要日期在未来。
现在我有:
SELECT
COALESCE(
SUM(
COALESCE(
datetime_1 > NOW() AND EXTRACT(MONTH FROM datetime_1) = 1,
FALSE
)::INT,
COALESCE(
datetime_2 > NOW() AND EXTRACT(MONTH FROM datetime_2) = 1,
FALSE
)::INT,
COALESCE(
datetime_3 > NOW() AND EXTRACT(MONTH FROM datetime_3) = 1,
FALSE
)::INT
), 0) AS january_count,
.... AS february_count,
.... AS march_count,
.... AS etc
FROM assumption;
这可以正常工作并返回正确的结果,但它相当臃肿,并且每个月都会返回一行和一列。 在现实生活中,这个查询有点复杂,我宁愿得到一个每个月都会给我一行的结果(这样我就可以在每个月的行中添加更多字段)
我有什么遗漏的吗,有什么办法可以改进吗?
【问题讨论】:
标签: sql postgresql datetime count unpivot