根据结果​​列表中的键在不同列中添加值

时间:2017-07-19 13:54:39

标签: mysql

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

我有这个:

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

我想:

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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

<强>输出:

enter image description here

在这里演示:

Rextester