#sql #case #amazon-redshift
#sql #case #amazon-redshift
Вопрос:
У меня есть таблица в SQL с именем ‘full_data’, которая выглядит следующим образом:
Date Product Size Currency Paid
10/11/2020 T-shirt M EUR 40.00
09/11/2020 Hoodie S USD 60.00
etc...
Я хочу добавить новый столбец в full_data, используя оператор CASE. Оператор CASE выглядит следующим образом:
CASE
WHEN Product = 'Hoodie' AND Size = 'S' THEN 'Small hoodie'
WHEN Product = 'Hoodie' AND Size = 'M' THEN 'Medium hoodie'
WHEN Product = 'T-shirt' AND Size = 'S' THEN 'Small shirt'
WHEN Product = 'T-shirt' AND Size = 'M' THEN 'Medium shirt'
ELSE 'Other product'
END AS sale_note
Какой правильный код использовать, чтобы таблица в конце выглядела так:
sale_note Date Product Size Currency Paid
Medium shirt 10/11/2020 T-shirt M EUR 40.00
Small hoodie 09/11/2020 Hoodie S USD 60.00
Ответ №1:
Вы бы просто поместили case
выражение в select
:
SELECT (CASE WHEN Product = 'Hoodie' AND Size = 'S' THEN 'Small hoodie'
WHEN Product = 'Hoodie' AND Size = 'M' THEN 'Medium hoodie'
WHEN Product = 'T-shirt' AND Size = 'S' THEN 'Small shirt'
WHEN Product = 'T-shirt' AND Size = 'M' THEN 'Medium shirt'
ELSE 'Other product'
END) AS sale_note,
fd.*
FROM full_data fd;
Вы можете создать представление с этой информацией:
create view v_full_data as
SELECT (CASE WHEN Product = 'Hoodie' AND Size = 'S' THEN 'Small hoodie'
WHEN Product = 'Hoodie' AND Size = 'M' THEN 'Medium hoodie'
WHEN Product = 'T-shirt' AND Size = 'S' THEN 'Small shirt'
WHEN Product = 'T-shirt' AND Size = 'M' THEN 'Medium shirt'
ELSE 'Other product'
END) AS sale_note,
fd.*
from full_data fd;
Я не думаю, что Redshift поддерживает сгенерированные столбцы, поэтому просмотр — ваш лучший вариант.