我在八月份运行查询,但我想将其转换为date_part
函数。
这是原始查询。
SELECT avg(CASE WHEN date = LEAST(current_date-1,'8/31/14') THEN bo ELSE NULL END) end_bo
From <table>
我正在尝试做的是将LEAST
插入下面的那个。
SELECT avg(CASE WHEN date_part('month', date) = 8 and date_part('year', date) = 2014 THEN bo ELSE NULL END) end_bo
From <table>
问题是,我看不到我可以将其插入的地方。
答案 0 :(得分:3)
第一个查看哪个日期更早,currentdate
或Aug 31 2014
,如果它等于date
则返回bo
。
第二个测试当前月份是aug 2014
并返回bo
。
要将相同的逻辑应用于第二个查询,它可能如下所示:
SELECT avg(CASE
WHEN least(date_part('month', currentdate), 8) = date_part('month', date)
and date_part('year', date) = 2014
THEN bo
ELSE NULL
END) end_bo
这将查看当前月份,查看是否低于8,将其与date
个月进行比较,如果等于返回bo
。
LEAST
只返回列表中的最小数字。所以least(9,8)
(9月,8月)将返回8.