Search code examples
sqlpostgresqlsyntax-errorcreate-view

Postgresql Syntax error at or near " THEN "


I'm trying to create a view in Postgresql , but when I run this code appears this error:

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

  • VALID (Boolean not null)

Solution

  • You should use 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
    

    So,

    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 ...