首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-01-01 
一个疑惑的sql面试题有一表为addressid    name001   中国002    国外001001  江西001002  上海001003  北

一个疑惑的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)

热点排行