语法错误问题

时间:2018-06-17 11:09:46

标签: sql postgresql

我有一个查询表的代码,该表在列中查找正常值,然后在另一列中显示该值。

我收到以下错误:

  

错误:“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"是我在所有其他查询中使用的,并且有效。

任何人都可以帮助我吗?

3 个答案:

答案 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",