Не могу понять проблему с этим SQL CASE - PullRequest
1 голос
/ 13 января 2020
CASE
WHEN CAST(a.category AS VARCHAR) like '%jumpsuits%'   THEN CAST(a.google_product_category AS VARCHAR) = 'Apparel & Accessories > Clothing > One-Pieces > Jumpsuits & Rompers'
WHEN CAST(a.category AS VARCHAR) like '%knitwear%'    THEN CAST(a.google_product_category AS VARCHAR) = 'Apparel & Accessories > Clothing > Dresses'
WHEN CAST(a.category AS VARCHAR) like '%lounge wear%' THEN CAST(a.google_product_category AS VARCHAR) = 'Apparel & Accessories > Clothing > Shirts & Tops'
ELSE CAST(a.google_product_category AS VARCHAR) END as google_product_category

Проблема, с которой я сталкиваюсь: «SYNTAX_ERROR: строка 7: 6: Все результаты CASE должны быть одного типа: логический»

Я также присоединился к таблице в предыдущем приведении к подзапросу это как varchar, поэтому не должно быть никаких проблем с этим.

У кого-нибудь есть какие-либо идеи?

Для контекста я пытаюсь заполнить поле, которое будет возвращать пустое место, где категория это как мои "любит" все остальное, я просто хочу, чтобы это осталось как есть.

Большое спасибо

1 Ответ

1 голос
/ 13 января 2020

Ваш CASE имеет выражения, возвращающие разные типы данных, что недопустимо. Если вы просто пытаетесь обновить google_product_category на основе столбца category, попробуйте что-то вроде этого:

Пример данных

CREATE TEMPORARY TABLE t (category TEXT, google_product_category TEXT);
INSERT INTO t VALUES ('Jumpsuit'),('kniTweaR'),('lounge WEAR');

Запрос

SELECT category,
  CASE 
    WHEN category ILIKE '%jumpsuit%' 
      THEN 'Apparel & Accessories > Clothing > One-Pieces > Jumpsuits & Rompers'
    WHEN category ILIKE '%knitwear%' 
      THEN 'Apparel & Accessories > Clothing > Dresses'
    WHEN category ILIKE '%lounge wear%' 
      THEN 'Apparel & Accessories > Clothing > Shirts & Tops'
  END
FROM t;

  category   |                                case                                 
-------------+---------------------------------------------------------------------
 Jumpsuit    | Apparel & Accessories > Clothing > One-Pieces > Jumpsuits & Rompers
 kniTweaR    | Apparel & Accessories > Clothing > Dresses
 lounge WEAR | Apparel & Accessories > Clothing > Shirts & Tops
(3 Zeilen)
...