首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在连接多个表时使用合并

在连接多个表时使用合并
EN

Database Administration用户
提问于 2020-02-13 09:20:07
回答 1查看 298关注 0票数 0

在PG 12数据库中,我有reservations表和reserved_between tsrange列。

对于特定的analysis,我需要知道最后一个预约的结束(稍后时间),下面的查询就是这样做的。

代码语言:javascript
复制
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引用的batchas_early_as (datetime)值。

我认为COALESCE是这份工作的好选择。因此,我对问题作了如下更新。

代码语言:javascript
复制
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中使用。

我也不知道如何解决这个问题,文档对我也没有太大的帮助。

我应该在查询中更改哪些内容?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-02-13 09:42:22

代码语言:javascript
复制
SELECT COALESCE(MAX(upper(reservations.reserved_between)), MAX(batches.as_early_as))
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/259593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档