【问题标题】:Add value in different column based on a key in result list [duplicate]根据结果​​列表中的键在不同列中添加值[重复]
【发布时间】:2017-12-24 20:28:25
【问题描述】:

我打赌我的标题不清楚,所以有一张我想要的表格。

我有这个:

+------+---------+-------+
|LOGIN |   KEY   | VALUE |
+------+---------+-------+
|JDE001|LASTNAME |Doe    |
|JDE001|FIRSTNAME|John   |
|RRE001|LASTNAME |Roe    |
|RRE001|FIRSTNAME|Richard|
+------+---------+-------+

我想要:

    +------+--------+---------+
    |LOGIN |LASTNAME|FIRSTNAME|
    +------+--------+---------+
    |JDE001|Doe     |John     |
    |RRE001|Roe     |Richard  |
    +------+--------+---------+

有什么想法吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以在此处使用简单的数据透视查询。诀窍在于,对于属于给定登录名的每对记录,我们使用 MAX()CASE 表达式将名字和姓氏转出到单独的列中。

    SELECT
        LOGIN,
        MAX(CASE WHEN `KEY`='LASTNAME'  THEN VALUE END) AS LASTNAME,
        MAX(CASE WHEN `KEY`='FIRSTNAME' THEN VALUE END) AS FIRSTNAME
    FROM yourTable
    GROUP BY LOGIN
    

    输出:

    演示在这里:

    Rextester

    【讨论】:

    • 你会回答多少次这些问题,而不是把它们当作重复而关闭?
    • @Shadow 数据在我看来是真实的,所以我认为这不是作业转储。诚然,没有表现出什么努力,但这似乎是一个真正的问题。
    • 问题是家庭作业还是真实问题都没有关系 - 如果之前已经回答过,那么它就是重复的。这是我今天遇到的第 4 个 mysql 数据透视表问题。
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多