2017-07-25 62 views
-3

SQL不同的結果中選擇行:我有一個這樣的表:具有相同的ID,但在另一列

+------+------+ 
|ID |Result| 
+------+------+ 
|1  |A  | 
+------+------+ 
|2  |A  | 
+------+------+ 
|3  |A  | 
+------+------+ 
|1  |B  | 
+------+------+ 
|2  |B  | 
+------+------+ 

輸出應該是這樣的:

輸出:

+------+-------+-------+ 
|ID |Result1|Result2| 
+------+-------+-------+ 
|1  |A  |B  | 
+------+-------+-------+ 
|2  |A  |B  | 
+------+-------+-------+ 
|3  |A  |  | 
+------+-------+-------+ 

我怎樣才能做到這一點?

+1

請重新格式化內容。這是不可讀的。 – DanielO

回答

0
SELECT 
    Id, 
    MAX((CASE result WHEN 'A' THEN 'A' ELSE NULL END)) result1, 
    MAX((CASE result WHEN 'B' THEN 'B' ELSE NULL END)) result2, 
FROM 
    table1 
GROUP BY Id 

結果在SQL小提琴

+------+-------+-------+ 
|Id |Result1|Result2| 
+------+-------+-------+ 
|1  |A  |B  | 
|2  |A  |B  | 
|3  |A  |NULL | 
+------+-------+-------+ 

運行現場演示:(http://sqlfiddle.com/#!9/e1081/2

+1

這隻有在只有兩個可能的值是A和B時纔有效 - 這是由OP提供的,儘管未被確認。 – Eli

0

有幾個方法可以做到這一點。 012hm沒有一個直線前進。在理論上,一個簡單的方法是創建2個臨時表,您在這裏分隔數據,在一個表中創建所有「A」結果,在另一個表中創建「B」。

然後用簡單的查詢得到結果。使用JOIN。

如果您允許在流程上使用某些scrpting,那麼它更簡單,其他方面您需要更復雜的查詢邏輯。而對於你查詢alwasy的工作,你需要有一些規則,如表總是包含比B表更多的ID。

如果你發佈你的真實例子,獲得更好的答案會更容易。

0

這個原因:

ID名稱的文件名

1001 swapan 4566.jpg
1002 swapan 678.jpg
1003卡里姆7688.jpg
1004塔雷克7889.jpg 1005卡里姆fdhak。 jpg

輸出:

ID名稱文件名

1001 swapan 4566.jpg 678.jpg
1003卡里姆7688.jpg fdhak.jpg 1004塔裏克7889.jpg ... ...... ......

+0

SO不能這樣工作。您必須更新問題以提供新的示例數據並通知我們'filename'列可能具有*不可預知*值 –

+0

檢查此問題([https://stackoverflow.com/questions/15462753/mysql-join-multiple -rows-AS柱(https://stackoverflow.com/questions/15462753/mysql-join-multiple-rows-as-columns)) –

相關問題