首页 > 解决方案 > 如何在 PostgreSQL 中使用 CASE WHEN 而不向聚合和 GROUP BY 添加值?

问题描述

如果我的条件是正确的,我需要一个时间戳,如果不是,我需要另一个值。

我提出了这样的条件:

CASE WHEN tr.type = 'deposit' THEN tr.timestamp::date ELSE tr.status_last_change_timestamp::date END AS timestamp

但是 PostgreSQL 需要添加tr.type到聚合函数或 GROUP BY:

ERROR: column "tr.type" must appear in the GROUP BY clause or be used in an aggregate function

但这对我来说是不可能的,因为我需要在一行查询结果中进行存款和其他交易。

我怎样才能做到?谢谢!

tr包含(例如):amount, type, timestamp, status_last_change_timestamp

标签: sqlpostgresqlcase

解决方案


@MaciejLos 给出了解决方案。在这种情况下,您只需要添加tr.type(在我的示例中)GROUP BY而不将其添加到SELECT.


推荐阅读