SQL - 用于展开表的递归查询

时间:2015-09-23 16:25:34

标签: sql-server recursion

我很抱歉这个问题很容易,但我是SQL的新手。我有下表:

----------表国-----------

地区 - 国家/地区

EMEA - 意大利 - 罗马

EMEA - 意大利 - 佛罗伦萨

EMEA - 西班牙 - 马德里

APJ - 日本 - Tokio

APJ - 日本 - 广岛

APJ - 中国 - Bejin

我必须使用递归查询展开它并获得以下内容:

EMEA

意大利

罗马

佛罗伦萨

西班牙

马德里

APJ

日本

TH的

广岛

中国

BEJIN

我不知道从哪里开始..任何提示?

1 个答案:

答案 0 :(得分: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

但是没有递归。