使用 CASE 语句 SQL 在 table 中创建新列
creating new column in table using CASE statement SQL
我在 SQL 中有一个名为 'full_data' 的 table,它看起来像:
Date Product Size Currency Paid
10/11/2020 T-shirt M EUR 40.00
09/11/2020 Hoodie S USD 60.00
etc...
我想使用 CASE 语句将新列添加到 full_data 中。 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
使用什么代码才能使最后的 table 看起来像:
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
您只需将 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 不支持生成的列,因此视图是您的最佳选择。
我在 SQL 中有一个名为 'full_data' 的 table,它看起来像:
Date Product Size Currency Paid
10/11/2020 T-shirt M EUR 40.00
09/11/2020 Hoodie S USD 60.00
etc...
我想使用 CASE 语句将新列添加到 full_data 中。 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
使用什么代码才能使最后的 table 看起来像:
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
您只需将 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 不支持生成的列,因此视图是您的最佳选择。