“ THEN ”处或附近的 Postgresql 语法错误

Postgresql Syntax error at or near " THEN "

我试图在 Postgresql 中创建一个视图,但是当我 运行 此代码出现此错误时:

syntax error at or near " THEN "

CREATE OR REPLACE VIEW VW_MONITOR_DEVICE AS
    SELECT
        P.POSIZIONE_DEVICE_ID AS MONITOR_DEVICE_ID,
        P.VALID AS VALID,
         [...]
        IF (VALID == FALSE THEN 'Valid' ELSE P.REASON_FOR_INVALID) AS DESCRIPTION,
         [...]
    FROM public.TA_POSIZIONI_DEVICE P
    JOIN ...

TA_POSIZIONI_DEVICE

IF (VALID == FALSE) THEN 'Valid' ELSE P.REASON_FOR_INVALID END IF AS DESCRIPTION

试试这个!你的条件中有括号问题

你应该使用 CASE

The SQL CASE expression is a generic conditional expression, similar to if/else statements in other programming languages

CASE WHEN condition THEN result
     [WHEN ...]
     [ELSE result]
END

所以,

CREATE OR REPLACE VIEW VW_MONITOR_DEVICE AS
    SELECT
        P.POSIZIONE_DEVICE_ID AS MONITOR_DEVICE_ID,
        P.VALID AS VALID,
         [...]
           CASE WHEN VALID = false THEN 'Valid'
                ELSE P.REASON_FOR_INVALID
           END AS DESCRIPTION,

         [...]
    FROM public.TA_POSIZIONI_DEVICE P
    JOIN ...

你可以用例

case when VALID = FALSE THEN 'Valid' ELSE P.REASON_FOR_INVALID end DESCRIPTION,