2015-09-23 79 views
-1

我很抱歉這個問題的不穩定性,但我對SQL很陌生。我有以下表格:SQL - 遞歸查詢來展開表格

表---------- -----------國家

地區 - 國家 - 城市

EMEA - 意大利 - 羅馬

EMEA - 意大利 - 佛羅倫薩

EMEA - 西班牙 - 馬德里

APJ - 日本 - 東京

APJ - 日本 - 廣島

APJ - 中國 - BEJIN

我將不得不展開它使用遞歸查詢並獲得什麼如下:

EMEA

意大利

羅馬

佛羅倫薩

西班牙

馬德里

APJ

日本

東京

廣島

中國

BEJIN

我不知道從哪裏開始..任何提示?

+0

這是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

所以你有3列的表,你想選擇所有3列成一列? – sean

+0

是的,我確實想將表格打包成一個獨特的列表。按照以下結構: 區域1 - >國家1 - >所有國家1 - >國家2 - >所有國家2 .... - >區域2 - >等等等等上。 – marcopo

回答

0

如果我理解正確的話,你想要得到的東西像這樣的查詢:

with united AS (
    SELECT DISTINCT 
     REGION col, 
     1 rnk, --Region goes before Countries and Cities 
     REGION, 
     null Country --we need only one appearance for each Region 
     FROM your_table 
    UNION ALL 
    SELECT DISTINCT 
     Country, 
     2, 
     REGION, 
     Country 
     FROM your_table 
    UNION ALL 
    SELECT 
     CITY, 
     3, 
     REGION, 
     Country 
     FROM your_table 
) 
select col 
FROM united 
ORDER BY REGION,Country,rnk 

fiddle

但沒有遞歸。

+0

感謝德米特里,這返回預期的結果。但是沒有遞歸,這是我現在面臨的第一個話題。 我也嘗試選擇不同的子集和使用指針,但我不認爲是SQL的最佳方式。 – marcopo