当前位置: 代码迷 >> 报表 >> 怎么得到这样的结果
  详细解决方案

怎么得到这样的结果

热度:173   发布时间:2016-05-05 07:49:15.0
如何得到这样的结果
有一个表结构和数据如下:
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  五     一二三四五
  相关解决方案