如何得到这样的结果
有一个表结构和数据如下:
CODE NAME
--------------- ----------------------------------------
209 城市与环境学院
209100 2007级
209101 2008级
209102 2009级
209103 2010级
209104 2011级
209105 2012级
想得到下面的结果,应该怎么办
CODE NAME FullName
--------------- ---------------------------------------- ----------------------------------------------------
209 城市与环境学院 城市与环境学院
209100 2007级 城市与环境学院,2007级
209101 2008级 城市与环境学院,2008级
209102 2009级 城市与环境学院,2009级
209103 2010级 城市与环境学院,2010级
209104 2011级 城市与环境学院,2011级
209105 2012级 城市与环境学院,2012级
[最优解释]
什么数据库?假设MYSQL
SELECT CODE,NAME,NAME WHERE LENGTH(CODE)=3
UNION ALL
SELECT CODE,NAME,concat((SELECT CODE,NAME,NAME WHERE LENGTH(CODE)=3),',',name)
sqlserver
SELECT CODE,NAME,NAME WHERE LENGTH(CODE)=3
UNION ALL
SELECT CODE,NAME,((SELECT CODE,NAME,NAME WHERE LENGTH(CODE)=3)+','+name)
[其他解释]
SELECT CODE,NAME,NAME from tt WHERE LENGTH(CODE)=3
UNION ALL
select * from (
SELECT CODE,NAME,((SELECT CODE,NAME,NAME WHERE LENGTH(CODE)=3)
[其他解释]
我的本意是这样的,这个表包含两个字段
Code varchar2(15)
Name varchar2(40)
Code是部门代码,每一级部门是3位长,所以Code最多可以表示5级部门,Code的值是如下形式的:
100
100100
100100100
100100100100
100100100100100
100101
100101100
100101100101
100101100101100
Name是当前这级部门的名称
我现在要要得到的是某个部门的完整的名称,即把他的上级部门名称拼到前面。表内容如下:
Code Name
100 一
100100 二
100100100 三
100100100100 四
100100100100100 五
我要得到的结果是:
Code Name 完整名称
100 一 一
100100 二 一二
100100100 三 一二三
100100100100 四 一二三四
100100100100100 五 一二三四五
[其他解释]
打开游标循环取值,判断、累加
[其他解释]
是oracle数据库
[其他解释]
','
[其他解释]
name)
from tt WHERE LENGTH(CODE)>3) aa
[其他解释]
或者说给出这个表中的任意一个部门代码,怎么获得这个部门的完整名称