【发布时间】:2018-04-23 17:23:51
【问题描述】:
我的query 中有下面的代码,但我不喜欢它。
(
(year + 1) = date_part('YEAR', CURRENT_DATE) OR
year = date_part('YEAR', CURRENT_DATE) OR
(year - 1) = date_part('YEAR', CURRENT_DATE)
)
有更好的形式来写这个条件吗?此条件的目标是返回今天的后一年和前一年之间的值。
编辑
我想要一个新功能:
SELECT DISTINCT ON (alias.year) alias.year, alias.another_column
FROM scheme.table AS alias
WHERE alias.active IS TRUE AND ABS(alias.year- date_part('YEAR', CURRENT_DATE)) IN (0,1)
ORDER BY alias.year, alias.another_column DESC;
上面的代码返回:
我想要:
2017 - 8
2018 - 1
2019 - 1
发生这种情况是因为 2019 年不存在任何记录,但当某年不存在时,我需要在另一列中返回值 1。
【问题讨论】:
-
我去试试更新问题@Morpheus
-
为什么 2019 年要使用
1而不是0?
标签: sql postgresql ansi-sql