2

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

“ 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

  • 有效(布尔值不为空)
4

3 回答 3

2

你应该使用CASE

SQL CASE表达式是一个通用的条件表达式,类似于其他编程语言中的if/else语句

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 ...
于 2016-02-16T09:03:23.990 回答
1

你可以用案例

case when VALID = FALSE THEN 'Valid' ELSE P.REASON_FOR_INVALID end DESCRIPTION,
于 2016-02-16T09:05:15.723 回答
-2

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

尝试这个 !你的情况有括号问题

于 2016-02-16T09:02:55.053 回答