2017-03-28 33 views
1

嗨單件作品我有一個問題,在那裏我有一個表,如下所示:查詢發現從表

from_city to_city  Distance 
bangalore chennai  350 
chennai Bangalore 350 
mumbai  bangalore 500 
bangalore Mumbai  500 
Mumbai  Delhi  500 
Delhi  Mumbai  500 

在這裏,我前人的精力得到一個答案如下:

bangalore chennai  350 
Mumbai  Bangalore 500 
Mumbai  Delhi  500 

答案可以班加羅爾 - 欽奈或channai-bangalore,因爲它們在兩條路上的距離相同。我只需要從每個城市進入一次。我怎麼能實現它?答案應該是一般的。如果還有其他一些城市像班加羅爾 - 莫斯科爾或邁索爾 - 班加羅爾那樣加入,我只需要入場就可以了。

回答

1

一種方法是使用不同的情況下與:

select distinct 
    case when lower(from_city) < lower(to_city) 
     then Initcap(from_city) else Initcap(to_city) end as from_city, 
    case when lower(from_city) < lower(to_city) 
     then Initcap(to_city) else Initcap(from_city) end as to_city, 
    Distance 
from t; 

產地:

FROM_CITY TO_CITY  DISTANCE 
-------------------------------- 
Delhi  Mumbai  500 
Bangalore Mumbai  500 
Bangalore Chennai  350