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