我所要求的简化版本是:假设我已经有一列行人夹克颜色,它非常具体,包括诸如(金丝雀、金色、蒲公英、黄色、柠檬水、天蓝色、淡蓝色、天蓝色)的值, ETC。)。我想创建 2 个新列: “颜色组”和“浅色-深色”,这样我就可以将所有黄色夹克标记为黄色颜色组,并且可以将它们全部分类为浅色。
请注意,我正在数据库产品中工作,所有数据都存储在数据库中,我无法在实际数据库中创建新数据。但在报告模块中,我可以根据现有列创建列。该数据仅存在于报告中,而不存在于数据库中。另外,它的设置方式我不需要默认情况下发生的 SELECT 命令,但请随意将其放入您的响应中,它不会让我感到困惑。 我试过:
如果 customer_jacket_color =“蒲公英” 然后 “黄色”
还尝试使用 WHEN 而不是“if”
当 customer_jacket_color_group = '黄色' 时 然后 “光”
我的预期结果将采用 1 列颜色并根据我将原始值映射到新列的方式提供 3 列来描述颜色。 蒲公英, 黄色, 浅色 海军蓝、蓝色、深色 薄荷色、绿色、浅色...
最佳答案
我认为您需要一个 case
表达式:
select t.*,
(case when customer_jacket_color = 'dandelion' then 'Yellow'
when customer_jacket_color = 'sky blue' then 'Blue'
. . .
end) as color_group,
(case when customer_jacket_color = 'dandelion' then 'light'
when customer_jacket_color = 'sky blue' then 'dark'
. . .
end) as light_dark
from t;
关于sql - 如何创建一个 SQL 列,其值取决于(映射到)现有查找列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58353819/