sql - 如何创建一个 SQL 列,其值取决于(映射到)现有查找列的值?

标签 sql mapping rename

我所要求的简化版本是:假设我已经有一列行人夹克颜色,它非常具体,包括诸如(金丝雀、金色、蒲公英、黄色、柠檬水、天蓝色、淡蓝色、天蓝色)的值, 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/

相关文章:

vim - 在 Vim 中使用 latex-suite 映射 <C-j> 的问题

java - 映射结构 : map field conditionally or ignore

regex - 如何替换文件名中的数字但从中减去 1?

php - 使用 friend 表从用户表中选择名字和姓氏

php - 如何从sql中以逗号分隔的表中检索数据?

nhibernate - 如何在 Nhiberbate 中映射 oracle 数据类型 SYS.XMLTYPE

Mercurial:如何将更改 merge 到在另一个分支中重命名的文件?

python - 将索引重命名为数据帧中的连续字符串?

sql - 为什么 COUNT(columnname) 中不计入空值

sql - SQL 查询参数化如何工作?