2017-07-19 59 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