在PG 12数据库中,我有reservations表和reserved_between tsrange列。
对于特定的analysis,我需要知道最后一个预约的结束(稍后时间),下面的查询就是这样做的。
SELECT MAX(upper(reservations.reserved_between))
FROM dev.reservations
JOIN dev.analyses ON reservations.analysis_id = analyses.id
JOIN dev.analytical_tests ON analyses.analytical_test_id = analytical_tests.id
WHERE analytical_tests.specification_id = <MYID>
AND analytical_tests.tag = <MYTAG>其中<MYID>和<MYTAG>是识别分析所需的参数。
现在,如果没有reservations,我需要返回analysis引用的batch的as_early_as (datetime)值。
我认为COALESCE是这份工作的好选择。因此,我对问题作了如下更新。
SELECT COALESCE(MAX(upper(reservations.reserved_between)), batches.as_early_as)
FROM dev.reservations
JOIN dev.analyses ON reservations.analysis_id = analyses.id
JOIN dev.analytical_tests ON analyses.analytical_test_id = analytical_tests.id
JOIN dev.batches ON analyses.batch_id = batches.id
WHERE analytical_tests.specification_id = <MYID>
AND analytical_tests.tag = <MYTAG> 但是,当我跑的时候
错误:列"batches.as_early_as“必须出现在GROUP子句中,或者在聚合函数行1: batches.as_early_as batches.as中使用。
我也不知道如何解决这个问题,文档对我也没有太大的帮助。
我应该在查询中更改哪些内容?
发布于 2020-02-13 09:42:22
SELECT COALESCE(MAX(upper(reservations.reserved_between)), MAX(batches.as_early_as))https://dba.stackexchange.com/questions/259593
复制相似问题