【问题标题】: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岁以下等) ...)

谢谢!

山姆

【问题讨论】:

    标签: sql join


    【解决方案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 多个不同名称的列,我宁愿不对所有内容进行硬编码。有没有办法使用系统表来使用列名?
    • 表格的设计需要硬编码。由于第一个表中的代码列具有文本值,因此我没有看到其他方法。
    猜你喜欢
    • 2020-01-11
    • 2020-01-04
    • 2021-09-11
    • 2021-12-26
    • 2023-03-14
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多