2014-06-30 87 views
1
City | Person   City | Person 
--------------   ------------- 
C | Fanie   D | Jan 
C | Johannes   D | Maria 
C | Anna  to  J | Frik 
D | Jan    C | Anna  
D | Maria   C | Fanie 
J | Frik    C | Johannes 

我想^表就像這樣一個^。sql group by values from two columns

我試過說Select * FROM TableA GROUP BY City ='D', City = 'J' City = 'C'但是那麼名稱並沒有像上面顯示的那樣?我將如何實現這一目標?或者,你如何按列值進行組合並對名稱進行排序。 ?

+0

你想它看起來像左表還是右表? – Tanner

+0

按城市排列,含案例陳述 –

+4

D,J,C,Maria之後,漢族之後,Frik之前,D怎麼樣?請解釋你想要的排序順序。 –

回答

0
select * from TableA ORDER BY City,Person 

這應該工作,如果你想根據城市,然後按人排序,但從你的輸出我看不到任何排序。

1

試試這個:

SELECT City, Person 
FROM TableA 
WHERE City IN ('C', 'D', 'J') 
ORDER BY 
    (CASE City 
     WHEN 'D' THEN 1 
     WHEN 'J' THEN 2 
     WHEN 'C' THEN 3 
     ELSE 4 END), 
    Person; 
1

對於自定義排序或排序基於某些規則,可以通過子句中下列方式使用case語句的順序和執行它

Select * FROM TableA order by case when city ='D' then 1 
when city ='J' then 2 else 3 end, Person 

你可以嘗試這個 ?

+0

請問您可以詳細解釋爲什麼這是一個很好的解決方案。 –

+0

你想要自定義的排序,這是不自然的,所以使它自然秩序,即1,2,3和排序 –

+0

你能編輯你的答案,並把這些額外的信息。 –

0

我不知道你爲什麼需要這樣做,我希望這會對你有幫助!, 我使用MySQL的CASE函數,我提供的解決方案是當城市等於'D'時,它將是第一個如果城市='C'然後它將是第二個ELSE它將是最後的

SELECT * FROM TableA GROUP BY City,Person ORDER BY CASE WHEN City = 'D' THEN 1 WHEN 'C' THEN 2 ELSE 3 END 
+1

您或許可以解釋如何通過定義排序順序來解決訂購問題。 – pushpraj

+0

@pushpraj 我使用了MySQL 的CASE函數,我提供的解決方案是當City等於'D'時,它將是第一個如果City ='C'的人,那麼它將是第二個ELSE它將是最後的 – wrecklez

+1

偉大的,包括你的答案,以使其更容易解釋。 – pushpraj