一个疑惑的sql面试题 20jieqimin2008]

发布时间:2016-12-11 22:00:29 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"一个疑惑的sql面试题 20jieqimin2008]",主要涉及到一个疑惑的sql面试题 20jieqimin2008]方面的内容,对于一个疑惑的sql面试题 20jieqimin2008]感兴趣的同学可以参考一下。

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

create table address (id varchar(9),name varchar(10)) insert into address values('001'       ,'中国') insert into address values('002'       ,'国外') insert into address values('001001'    ,'江西') insert into address values('001002'    ,'上海') insert into address values('001003'    ,'北京') insert into address values('001004'    ,'湖北') insert into address values('001001001' ,'南昌') insert into address values('001001002' ,'抚州') insert into address values('001004001' ,'武汉') insert into address values('001004002' ,'黄冈') go select t1.name + '-' + isnull(t2.name,'') + '-' + isnull(t3.name,'') name from (select * from address where len(id) = 3) t1  left join (select * from address where len(id) = 6) t2 on t1.id = left(t2.id,3)  left join (select * from address where len(id) = 9) t3 on t2.id = left(t3.id,6)  order by name drop table address /* name                              --------------------------------  国外-- 中国-北京- 中国-湖北-黄冈 中国-湖北-武汉 中国-江西-抚州 中国-江西-南昌 中国-上海- (所影响的行数为 7 行) */

create table address (id varchar(9),name varchar(10)) insert into address values('001'       ,'中国') insert into address values('002'       ,'国外') insert into address values('001001'    ,'江西') insert into address values('001002'    ,'上海') insert into address values('001003'    ,'北京') insert into address values('001004'    ,'湖北') insert into address values('001001001' ,'南昌') insert into address values('001001002' ,'抚州') insert into address values('001004001' ,'武汉') insert into address values('001004002' ,'黄冈') go select t1.name + isnull(t2.name,'') + isnull(t3.name,'') name from (select * from address where len(id) = 3) t1  left join (select id,'-'+name name from address where len(id) = 6) t2 on t1.id = left(t2.id,3)  left join (select id,'-'+name name from address where len(id) = 9) t3 on t2.id = left(t3.id,6)  order by name drop table address /* name                              --------------------------------  国外 中国-北京 中国-湖北-黄冈 中国-湖北-武汉 中国-江西-抚州 中国-江西-南昌 中国-上海 (所影响的行数为 7 行) */

请问就分三级吗?

/*------------------------ create table address (id varchar(9),name varchar(10)) insert into address values('001'       ,'中国') insert into address values('002'       ,'国外') insert into address values('001001'    ,'江西') insert into address values('001002'    ,'上海') insert into address values('001003'    ,'北京') insert into address values('001004'    ,'湖北') insert into address values('001001001' ,'南昌') insert into address values('001001002' ,'抚州') insert into address values('001004001' ,'武汉') insert into address values('001004002' ,'黄冈') go --select * from address select id, name=case len(id) when 3 then name when 6 then (select name from address a1 where id=left(a.id,3))+'-'+name else (select name from address a1 where id=left(a.id,3))+'-'+(select name from address a2 where id=left(a.id,63))+'-'+name end from address as a drop table address ------------------------*/

id        name --------- -------------------------------- 001       中国 002       国外 001001    中国-江西 001002    中国-上海 001003    中国-北京 001004    中国-湖北 001001001 中国-南昌-南昌 001001002 中国-抚州-抚州 001004001 中国-武汉-武汉 001004002 中国-黄冈-黄冈 (10 row(s) affected)

/*------------------------ create table address (id varchar(9),name varchar(10)) insert into address values('001'       ,'中国') insert into address values('002'       ,'国外') insert into address values('001001'    ,'江西') insert into address values('001002'    ,'上海') insert into address values('001003'    ,'北京') insert into address values('001004'    ,'湖北') insert into address values('001001001' ,'南昌') insert into address values('001001002' ,'抚州') insert into address values('001004001' ,'武汉') insert into address values('001004002' ,'黄冈') go --select * from address select id, name=case len(id) when 3 then name when 6 then (select name from address a1 where id=left(a.id,3))+'-'+name else (select name from address a1 where id=left(a.id,3))+'-'+(select name from address a2 where id=left(a.id,6))+'-'+name end from address as a drop table address ------------------------*/ (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) id        name --------- -------------------------------- 001       中国 002       国外 001001    中国-江西 001002    中国-上海 001003    中国-北京 001004    中国-湖北 001001001 中国-江西-南昌 001001002 中国-江西-抚州 001004001 中国-湖北-武汉 001004002 中国-湖北-黄冈 (10 row(s) affected)

非常感谢你们,谢谢!谢谢!

有一数据表 Code  id ShowNo      name         parentid 1  001          领导           -1 2  001001    销售部         1 3  001002    人事部         1 4  001001001  小刚           2 5  001001002  小军           2 6  002     非领导       -1 7  002001     职员          6 8  002001001  小明           7 现在我要把它绑定在datagrid中,显示为 职称 部门 员工 领导 销售部 小刚 领导 销售部 小军 领导 人事部 null 非领导 职员 小明 用asp.net2.0 c#或vb 怎么实现? 最好能给出具体代码,谢谢!!

上一篇:如何判断某一目录下有txt文件时,触发将此文件汇入sql并调用reporting service打印的事件 10xmj077]
下一篇:身份证的有效期预警 10yin9184]

相关文章

相关评论