将列名连接到另一列中的值

Posted

技术标签:

【中文标题】将列名连接到另一列中的值【英文标题】:Join column name to the value in another column 【发布时间】:2018-03-07 18:23:03 【问题描述】:

我有以下表格:

分类表

> ID    Code    CodeValue    Value 
> 1     sex     1            Male 
> 1     sex     2            Female 
> 2     age     1            Under 20 
> 2     age     2            Between 20 and 40 
> 2     age     3            Over 40

数据表

> sex    age  
> 1      1
> 1      2
> 2      2
> 1      3

我想根据代码返回字段的值,以便最终表格如下所示:

> sex      age  
> Male     Under 20
> Male     Between 20 and 40
> Female   Between 20 and 40
> Male     Over 40

有什么方法可以将Category表中'Code'列的值(性别年龄)与Data表中的列名连接起来,然后返回对应的'Value'(男性、女性、20岁以下等) ...)

谢谢!

山姆

【问题讨论】:

【参考方案1】:

您可以加入表格两次,每个类别一次。

SELECT cts.value sex, cta.value age
FROM data_table dt
INNER JOIN category_table cts
  ON dt.sex = cts.code_value AND cts.code = 'sex'
INNER JOIN category_table cta
  ON dt.age = cta.code_value AND cta.code = 'age'

【讨论】:

您的第二次加入应该是 dt.age,而不是 dt.sex 感谢您的回答。是否可以在不明确说明“性别”和“年龄”的情况下加入?表通常有 15 多个不同名称的列,我宁愿不对所有内容进行硬编码。有没有办法使用系统表来使用列名? 表格的设计需要硬编码。由于第一个表中的代码列具有文本值,因此我没有看到其他方法。

以上是关于将列名连接到另一列中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 的另一列中的字符串值中从数据框中的一列中搜索字符串?

PSQL - 查找所有值并根据另一列中的非唯一值使其唯一

在另一列中使用一列中的值

检查一列中的值是不是存在于另一列中,如果存在,则将另一列中的值复制到新列中

在另一列满足条件后计算一列中的值

如何将 SQL 中的列中的值 PIVOT 到新的列名中,然后在这些 PIVOT 列下列出其他列值?