2010-08-17 45 views
2

我有這樣的表MySQL搭配一個以上的列

------------------ 
1 | 20,00 | A | 
2 | 20,00 | A | 
3 | 20,00 | A | 
4 | 20,00 | A | 
1 | 50,00 | B | 
2 | 50,00 | B | 
3 | 50,00 | B | 
4 | 50,00 | B | 

我喜歡爾德以產生這一個組使用通過。

id | A  | B  | 
---------------------- 
1 | 20,00 | 50,00 | 
2 | 20,00 | 50,00 | 
3 | 20,00 | 50,00 | 
4 | 20,00 | 50,00 | 

你能幫我嗎?

回答

3

這看起來不像group by問題。但你可以用join輕鬆解決。

SELECT 
    a.id, 
    a.a, 
    b.b 
FROM table AS a 
JOIN table AS b ON a.id = b.id 
WHERE a.name = 'A' AND b.name = 'B' 
5

這是一個標準的支點查詢:

SELECT t.id, 
     MAX(CASE WHEN t.col = 'A' THEN t.value ELSE NULL END) AS A, 
     MAX(CASE WHEN t.col = 'B' THEN t.value ELSE NULL END) AS B 
    FROM TABLE t 
GROUP BY t.id 

MySQL不支持PIVOT/UNPIVOT語法。

+0

我已經使用數據透視表,但我還有一個問題。列A和B必須自動創建。像這樣 對於每個t.col在水平線上打印,然後在列上打印它們的價格! – Calebe 2010-08-18 14:40:49

+0

@Calebe:「自動」? – 2010-08-18 15:44:00

0

假設你的表是「table_name」,第一列是「id」,第二列是「Value」,第三列是「Type」並且是帶有'A'或'B'的枚舉:

SELECT 
    a.ID, 
    a.Value, 
    b.Value 
FROM table_name AS a, 
    table_name AS b 
WHERE a.ID=b.ID AND 
    a.Type='A' AND 
    b.Type='B'