sql - 如何在 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
解决方案
@MaciejLos 给出了解决方案。在这种情况下,您只需要添加tr.type
(在我的示例中)GROUP BY
而不将其添加到SELECT
.
推荐阅读
- python - 如何用 2 个键和一个值创建 dict?
- asp.net - ReportViewer 控制参数安全
- python - 如何从 BeautifulSoup 中的 html 中提取未指定的链接?
- imagemagick-convert - 使用 GraphicsMagick MediaBox / CropBox 分辨率将 TIFF 转换为 PDF
- javascript - 无法将布尔值返回到 ionViewCanLeave
- ios - 有没有办法在 NSArray 中找到所有匹配的对象?
- javascript - 如何将所有/替换为 - 来自字符串
- python-3.x - 逻辑运算符在 Pandas 中无法正常工作
- javascript - CSS 的难点
- ios - 如何在后台禁用 Cordova webview?(仅限 iOS)