我有一个查询表的代码,该表在列中查找正常值,然后在另一列中显示该值。
我收到以下错误:
错误:“FROM”或附近的语法错误
第7行:来自公众。“过程”
代码如下:
SELECT CASE WHEN "Process.Amount 1" = 'Normal'
THEN "Process.time 1"
END AS "Process.time 1",
CASE WHEN "Process.Amount 2" = 'Normal'
THEN "Process.time 2"
END AS "Process.time 2",
FROM public."Process"
WHERE 'Normal' IN ("Process.Amount 1", "Process.Amount 2");
我认为它必须是进程表的路径,并尝试了各种编写方式,但也有相同的错误。
public."Process"
是我在所有其他查询中使用的,并且有效。
任何人都可以帮助我吗?
答案 0 :(得分:3)
您的代码中存在多个错误。第一个是在最后一个声明列之后删除逗号,以便在SELECT语句中检索。
其次,当您使用引号创建表名并对列执行相同操作时,您需要在每个对象名称周围加上引号,而不是将它们全部放在一起,只要您想引用它们。例如,如果您有一个表"Process"
和一列"Amount 1"
,那么:
这是无效的
"Process.Amount 1"
这是有效的
"Process"."Amount 1"
那说你的查询应该是这样的:
SELECT
CASE WHEN "Process"."Amount 1" = 'Normal'
THEN "Process"."time 1" END AS "Process.time 1",
CASE WHEN "Process"."Amount 2" = 'Normal'
THEN "Process"."time 2" END AS "Process.time 2"
FROM public."Process"
WHERE 'Normal' IN ("Process"."Amount 1", "Process"."Amount 2");
我不知道你的情况如何 - 它有效,但取决于你真正想要达到的目标可能不是从右到左书写的最佳方式;)
此外,作为一般规则,请避免引用数据库对象的引号,因为它引入了更多问题而不是它有帮助。
答案 1 :(得分:2)
names-# END AS "Process.time 2",
names-# FROM public."Process"
您正在撰写SELECT a,b, FROM
。尝试删除额外的逗号。
答案 2 :(得分:1)
下面有一个额外的逗号:
END AS "Process.time 2",