首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

遇到一个分类显示数据的小疑点,求解多谢

2012-02-09 
遇到一个分类显示数据的小问题,求解谢谢有一张表:001国内002国外001001江苏001002浙江001003广东001001001

遇到一个分类显示数据的小问题,求解谢谢
有一张表:
001 国内
002 国外
001001 江苏
001002 浙江
001003 广东
001001001 南京
001001002 无锡
001001003 苏州
001002001 杭州
001002002 温州

要用sql语句得到如下结果:
国内-江苏-南京
国内-江苏-无锡
国内-江苏-苏州
国内-浙江-杭州
国内-浙江-温州
国内-广州
国外
以上结果顺序可以不相同

貌似曾经有人提过这个问题,不过搜了半天没找到答案


[解决办法]
分割字符串
[解决办法]

SQL code
create table ta(id varchar(20),[name] varchar(10))insert ta select'001','国内' union select '002','国外' union select '001001','江苏' union select '001002','浙江' union select '001003','广东' union select '001001001','南京' union select '001001002','无锡' union select '001001003','苏州' union select '001002001','杭州' union select '001002002','温州'goselect isnull(a.name,'') +       case when b.name is null then '' else  '->' + b.name  end+        case when c.name is null then '' else  '->' + c.name endfrom (select id,id as pid,name from ta where len(id ) = 3) aleft join(select id,left(id,3) as pid,name from ta where len(id) = 6) b on a.pid = b.pidleft join(select id,left(id,3) as pid ,left(id,6) as ppid,name from ta where len(id) = 9) con c.ppid = b.iddrop table ta /*---------------------------------- 国内->江苏->南京国内->江苏->无锡国内->江苏->苏州国内->浙江->杭州国内->浙江->温州国内->广东国外(所影响的行数为 7 行)*/ 

热点排行