sql - 语法错误问题

标签 sql postgresql

<分区>

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

我收到以下错误:

ERROR: syntax error at or near "FROM"
LINE 7: FROM public."Process"

代码如下:

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

谁能帮帮我?

最佳答案

您的代码中有几个错误。第一个是在最后声明要在 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");

我想知道你的 where 条件 - 它是有效的但取决于你实际想要实现的目标可能不是从右到左写它的最佳方式;)

此外,作为一般规则,请避免在数据库对象周围使用引号,因为它带来的问题多于帮助。

关于sql - 语法错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896065/

相关文章:

sql - PostgreSQL 强制标准 SQL 语法

sql - 按 where 子句值的顺序检索行

mysql - 内连接根据日期仅从第二个表中选择一行

sql - TO_DATE 为不同的格式掩码返回不同的日期?

sql - 带元素编号的 PostgreSQL unnest()

postgresql - 如何使用 GPG 验证 PgAdmin 二进制文件的 ASC 签名?

sql - 在 sqlite 查询中的第一个匹配项处停止

mysql - Postgresql 与 MySQL : how do their data sizes compare to each other?

PostgreSQL "if not exists"总是抛出语法错误

sql - PL/pgSQL 函数异常