postgresql - 如何在 Postgresql 查询中存储一个临时值,然后多次使用它?
问题描述
我有这个简单的查询:
SELECT COUNT(*)
FROM CompressorAlerts
WHERE CAST('2020-09-20' as timestamp) IS NULL OR faultTimestamp >= CAST('2020-09-20' as timestamp)
(我硬编码2020-09-20
......这确实是我从其他地方获得的价值,与这个问题无关,但为了简单起见,我对其进行了硬编码)。
如您所见,我重复了两次CAST('2020-09-20' as timestamp)
。我想避免这种情况,所以我尝试这样做:
WITH myDate as (SELECT CAST('2020-09-20' as timestamp))
SELECT COUNT(*)
FROM CompressorAlerts
WHERE myDate IS NULL OR faultTimestamp >= myDate
但是,我收到此错误:column "mydate" does not exist
.
如何引用我在子句myDate
中定义的值?WITH
难道我做错了什么?
解决方案
mydate
是 CTE 的名称,而不是其中的列表达式的名称。此外,您需要在FROM
查询部分包含 CTE。
WITH params (mydate) as (
values (timestamp '2020-09-20')
)
SELECT COUNT(*)
FROM CompressorAlerts, params
WHERE mydate IS NULL
OR faultTimestamp >= mydate
推荐阅读
- r - 从系数和变量的 R 数据框创建公式
- amazon-web-services - 如何使用 AWS CLI 批量删除多个 AWS 快照?
- php - 删除字符串数组中的空字符串
- css - 在树中仅显示当前工具提示
- php - Moodle 事件 API
- flutter - 将数组推入列表颤动
- node.js - 在 Express POST 路由中访问 URL 查询参数
- python-3.x - 列表中的 Python 模式自动匹配
- google-cloud-platform - 如何从 GCP Cloud Build 管道内提交 GCP AI Platform 训练作业?
- c++ - 为什么我收到此错误“没有构造函数实例”,CUDA 优化器中的 viennacl 库,C++ 控制台应用程序