select 公司名称,地址,(select 行业名称 from 行业分类表 where 行业编号='07' and 行业编号=a.行业编号)[一级分类],
                     (select 行业名称 from 行业分类表 where 行业编号='0701' and 行业编号=a.行业编号)[二级分类],
                     (select 行业名称 from 行业分类表 where 行业编号='0702' and 行业编号=a.行业编号)[三级分类],
                     (select 行业名称 from 行业分类表 where 行业编号='070202' and 行业编号=a.行业编号)[三级分类],
                     (select 行业名称 from 行业分类表 where 行业编号='070203' and 行业编号=a.行业编号)[三级分类]
from 公司资料表

解决方案 »

  1.   

    sorry ,少了一个a
    select 公司名称,地址,(select 行业名称 from 行业分类表 where 行业编号='07' and 行业编号=a.行业编号)[一级分类],
                         (select 行业名称 from 行业分类表 where 行业编号='0701' and 行业编号=a.行业编号)[二级分类],
                         (select 行业名称 from 行业分类表 where 行业编号='0702' and 行业编号=a.行业编号)[三级分类],
                         (select 行业名称 from 行业分类表 where 行业编号='070202' and 行业编号=a.行业编号)[三级分类],
                         (select 行业名称 from 行业分类表 where 行业编号='070203' and 行业编号=a.行业编号)[三级分类]
    from 公司资料表 a
      

  2.   

    CREATE function dbo.usd_ListCompanyBelong (@Number char(6))
    returns @re table(@公司名称 varchar(80),@地址 varchar(200),@一级分类 varchar(100),@二级分类 varchar(100),@三级分类 varchar(100))
    as
    begin
    select * from 行业分类表 where substring(行业编号,1,2)= substring(@Number,1,2) order by 行业编号
    --declare @l int
    --set @l=0
    select @公司名称=公司名称 from 公司资料表 where 行业编号=@Number
    select @地址=地址 from 公司资料表 where 行业编号=@Number
    select @一级分类=行业名称 from 行业分类表 where 行业编号=substring(@Number,1,2)
    select @二级分类=行业名称 from 行业分类表 where 行业编号=substring(@Number,1,4)
    select @三级分类=行业名称 from 行业分类表 where 行业编号=substring(@Number,1,6)
    insert @re select @公司名称,@地址,@一级分类,@二级分类,@三级分类
    return
    end
      

  3.   

    如果一共肯定三级,公司资料表的行业编号肯定6位select 公司名称,地址,(select 行业名称 from 行业分类表 where 行业编号=left(a.行业编号,2)) [一级分类],
                         (select 行业名称 from 行业分类表 where 行业编号=left(a.行业编号,4))[二级分类],
                         (select 行业名称 from 行业分类表 where 行业编号=left(a.行业编号,6))[三级分类]
    from 公司资料表 aor:
    select 公司名称,地址,b.行业名称 [一级分类],c.行业名称 [二级分类],d.行业名称 [三级分类]
    from 公司资料表 a left join 行业分类表 b
    on b.行业编号=left(a.行业编号,2)
    left join 行业分类表 c
    on c.行业编号=left(a.行业编号,4)
    left join 行业分类表 d
    on d.行业编号=left(a.行业编号,6)一楼的答案有小错误,可惜错了不管!哈,哈哈,哈哈哈......
      

  4.   

    --查询(动态的,要求每级编号固定两位,但可以是任意级数)
    declare @i varchar(10),@s varchar(8000)
    select @s='',@i=max(len(行业编号))/2
    from 公司资料表
    while @i>0
    select @s=',['+@i+'级分类]=max(case len(b.行业编号) when '
    +cast(@i*2 as varchar)+' then b.行业名称 else '''' end)'+@s
    ,@i=@i-1
    exec('
    select a.公司名称,a.地址'+@s+'
    from 公司资料表 a,行业分类表 b
    where a.行业编号 like b.行业编号+''%''
    group by a.公司名称,a.地址,a.行业编号')
      

  5.   

    --测试--测试数据
    create table 公司资料表(公司名称 varchar(10),地址 varchar(10),行业编号 varchar(10))
    insert 公司资料表 select 'AAA公司','XXX路XX号','070202'
    union  all       select 'BBB公司','XXX路XX号','070203'create table 行业分类表(行业编号 varchar(10),行业名称 varchar(20))
    insert 行业分类表 select '07'    ,'皮革/毛皮其制品'
    union  all       select '0701'  ,'制革业'
    union  all       select '0702'  ,'皮革制品'
    union  all       select '070202','革皮服装'
    union  all       select '070203','皮箱制造'
    go--查询(动态的,要求每级编号固定两位,但可以是任意级数)
    declare @i varchar(10),@s varchar(8000)
    select @s='',@i=max(len(行业编号))/2
    from 公司资料表
    while @i>0
    select @s=',['+@i+'级分类]=max(case len(b.行业编号) when '
    +cast(@i*2 as varchar)+' then b.行业名称 else '''' end)'+@s
    ,@i=@i-1
    exec('
    select a.公司名称,a.地址'+@s+'
    from 公司资料表 a,行业分类表 b
    where a.行业编号 like b.行业编号+''%''
    group by a.公司名称,a.地址,a.行业编号')go--删除测试
    drop table 公司资料表,行业分类表/*--测试结果公司名称       地址         1级分类         2级分类    3级分类                 
    ---------- ---------- -------------------- ---------- ------------
    AAA公司      XXX路XX号    皮革/毛皮其制品    皮革制品   革皮服装
    BBB公司      XXX路XX号    皮革/毛皮其制品    皮革制品   皮箱制造
    --*/
      

  6.   

    首先谢谢大家的帮助
    在大家的方案中, zjcxc(邹建) 先生的方法能最好的解决这个问题.而且整个过程相当的详细,在此表示衷心的感谢!
    其它的方案都有一些小的缺陷,如下:
    假如某些的行业分类没有第三级,其后将会从复第二级的分类,如"制革业",按要求如没有更细的分类应为"空"
    公司名称  地址       一级分类         二级分类   三级分类
    AAA公司   XXX路XX号  皮革/毛皮其制品   制革业    制革业     (0701)  
    BBB公司   XXX路XX号  皮革/毛皮其制品   皮革制品  皮箱制造   (070202) 再次谢谢大家!