ОШИБКА: аргумент AND должен иметь тип логический, а не текст - PullRequest
0 голосов
/ 03 апреля 2019

Я запутался с моим запросом ниже, что с ним не так, пожалуйста?

SELECT * FROM my_table 
WHERE 
    col_A <> 'Hello'
    AND col_B <> 'Holla'
    AND col_B <> 'Bonjour'

    AND (CASE WHEN col_c = 6 AND Language_col = 'Fr'THEN 'Français'
       WHEN col_c  = 9  AND Language_col = 'Fr'THEN 'Français'        
       WHEN col_c  = 12 AND Language_col = 'Eng' THEN 'English'
       WHEN col_c  = 4 AND Language_col = 'US' THEN 'Engish'
       ELSE Language END)

order by Date_col  

Я получаю этот тип ошибки:

ОШИБКА: аргумент AND должен иметь тип логический, а не тип text

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Если вы хотите новый столбец, то выражение case должно идти в select, а не where:

SELECT t.*,        
       (CASE WHEN col_c = 6 AND Language_col = 'Fr' THEN 'Français'
             WHEN col_c = 9 AND Language_col = 'Fr' THEN 'Français'        
             WHEN col_c = 12 AND Language_col = 'Eng' THEN 'English'
             WHEN col_c = 4 AND Language_col = 'US' THEN 'English'
             ELSE Language
        END)
FROM my_table t
WHERE col_A <> 'Hello' AND
      col_B NOT IN ( 'Holla', 'Bonjour' )
ORDER BY Date_col ;
0 голосов
/ 03 апреля 2019

вам нужно добавить некоторое значение фильтра для случая, когда -

SELECT * FROM my_table 
WHERE 
    col_A <> 'Hello'
    AND col_B not in ('Holla', 'Bonjour')
    AND (CASE WHEN col_c = 6 AND Language_col = 'Fr'THEN 'Français'
       WHEN col_c  = 9  AND Language_col = 'Fr'THEN 'Français'        
       WHEN col_c  = 12 AND Language_col = 'Eng' THEN 'English'
       WHEN col_c  = 4 AND Language_col = 'US' THEN 'Engish'
       ELSE Language END in ('Français','English'))
order by Date_col 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...