表名 test99
select test99.id ,test99.name,test9.name 
from test99,(select * from test99 test  where len(test.id)=3) test9 
where test9.id = left(test99.id,3) and len(test99.id) = 6

解决方案 »

  1.   

    SELECT b.id, a.name + b.name AS name
    FROM dbo.test a INNER JOIN
          dbo.test b ON a.id = LEFT(b.id, 3) AND LEN(b.id) > 3
    测试通过
      

  2.   

    谢谢楼上的诸位表结构
    id                name
    001               研发部
    001001            设计组
    001002            开发组
    001003            测试组
    002               销售部
    002001            调研组
    002001            客服组
    003               行政部
    sql 语句得到结果
    001001            研发部\设计组
    001002            研发部\开发组
    001003            研发部\测试组
    002001            销售部\调研组
    002001            销售部\客服组
    003               行政部我一葫芦画瓢,改造了一下 可是只是得到结果
    001001            研发部\设计组
    001002            研发部\开发组
    001003            研发部\测试组
    002001            销售部\调研组
    002001            销售部\客服组
    003               行政部\行政部
    虽可凑或 但不完美,如何搞定?
      

  3.   

    LEN(b.id) > 3这个条件就限制了不可能出现:003               行政部\行政部   这条数据
      

  4.   

    试试这条语句把
    SELECT b.id, case b.id 
                      when len(b.id)>3 then a.name + b.name 
                      else a.name
                 end
    FROM dbo.test a INNER JOIN
          dbo.test b ON a.id = LEFT(b.id, 3)
      

  5.   

    SELECT (A.id & right(b.id,3)), (A.name & '\' & b.name)
    FROM tablename AS A, tablename AS B
    WHERE len(A.id)=3 and len(B.id)=6 and a.id=left(b.id,3);在ACCESS里测试过了,没问题。