读书人

一个疑惑的sql面试题解决思路

发布时间: 2012-01-01 23:10:55 作者: rapoo

一个疑惑的sql面试题
有一表为address
id     name
001     中国
002    国外
001001   江西
001002   上海
001003   北京
001004   湖北
001001001 南昌
001001002 抚州
001004001 武汉
001004002 黄冈
用一句sql语名得到以下结果:
中国
中国-上海
中国-北京
中国-江西-南昌
中国-江西-抚州
中国-湖北-武汉
中国-湖北-黄冈
国外
结果中行的顺序可以打乱,但一定要这样的格式 
请各位高手,大师们帮帮小弟,谢谢

[解决办法]
--SQL语句
select name from tt where len(id) <=3

union

select isnull(e.name+ '- '+f.myTemp,e.name) as name from
(select id,name from tt where len(id) <=3) e
left join
(select b.id, isnull(b.n2+ '- '+a.n1,b.n2) as myTemp from
(select id,name as n2 from tt d where len(id)> 3 and len(id) <=6) b
left join
(select id,name as n1 from tt c where len(id)> 6) a
on b.id=substring(a.id,1,6)
)f
on e.id = substring(f.id,1,3)

读书人网 >asp.net

热点推荐