2017-07-19 37 views
-1

我敢打赌,我的标题不清楚,因此存在我想要的表格。根据结果列表中的关键字在不同列中添加值

我有这样的:

+------+---------+-------+ 
|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

您可以在这里使用简单的数据透视查询。诀窍是,对于属于给定登录名的每对记录,我们使用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

+0

多少次你要回答这些问题,而不是它们关闭为重复? – Shadow

+0

@Shadow数据看起来很真实,所以我认为这不是作业转储。当然,没有显示出什么努力,但它似乎是一个真正的问题。 –

+0

问题是家庭作业还是真实问题并不重要 - 如果之前已经回答过,那么它是重复的。这是我今天遇到的第4个MySQL数据透视表问题。 – Shadow

相关问题