【发布时间】:2016-10-06 10:14:16
【问题描述】:
我使用的是 PostgreSQL 8.2,而且我也是 PostgreSQL 的新手。
我必须根据字段的特定值 (49) (activity.type) 在 WHERE 子句中添加一个条件。这是我的查询:
SELECT activity.*
FROM activity
LEFT JOIN event_types ON activity.customstatusid = event_types.id, getviewableemployees(3222, NULL) AS report
WHERE
(
CASE WHEN activity.type = 49 THEN
'activity.individualid IN(SELECT individualid from prospects where prospects.individualid = activity.individualid)'
ELSE 1
END
)
AND activity.date BETWEEN '2016-10-01' AND '2016-10-06'
AND activity.type IN (21, 22, 49, 50, 37, 199)
AND (event_types.status = 1 or event_types.status IS NULL);
当我在 PGSQL 的命令行访问中运行上述查询时,出现以下错误:
ERROR: invalid input syntax for integer: "activity.individualid IN(SELECT individualid from prospects where prospects.individualid = activity.individualid)"
我在这里缺少什么?
【问题讨论】:
-
您试图在
WHERE子句中实现的逻辑是什么? -
我正在使用 CASE,其中我正在检查 activity.type=49 然后返回另一个子查询,该子查询检查潜在客户表中的 activity.individualid。这是我试图实现的逻辑
-
显然,您不能这样做,但请查看@donkopotamus 的答案,这看起来可能就是您的想法。
-
感谢您的宝贵时间,因为我非常需要您的帮助。让我再解释一下。我需要在运行时将一个条件添加到 WHERE 中,该条件将检查 activity.type = 49 是否会针对所有具有 activity.type=49 的记录对 activity.individualid 进行子查询
-
你的逻辑没有意义,如果从字面上理解,这意味着子查询甚至应该在
WHERE子句中,更不用说在CASE语句中了。如果您想在这里完全清楚,请向我们展示确切的输入和输出。
标签: postgresql case where-clause