表結構
depid 部門id  唯一
depname 部門名稱
depgx 部門關系
部分原始數據如下
depid              depname                             depgx
Q001000   制造部                        Q001      
Q001100   制一課                        Q0011     
Q001101   制一組                        Q001101   
Q001102   制二組                        Q001102   
Q001103   制三組                        Q001103   
Q001200   電子裝配部                    Q001200   
Q001201   插件一課                      Q001201   
想用sql語句達到下列要求
部門id, 部門名稱,課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001000 制造部   Q001100  制一課   Q001101  制一組     WR3-6954125  ...
......
或是:
課別id, 課別名稱, 組別ID, 組別名稱 工單號,時段,機重型號,....
Q001100  制一課   Q001101  制一組     WR3-6954125  ...
.........

解决方案 »

  1.   

    请楼主检查一下depgx列的值是否有误,例子中的depgx并不能反映三级关系.
    下面的测试数据depgx列的只并未采用楼主例子中的数据,而是根据楼主提供的结果进行的推测.
    declare @t table(depid varchar(20),depname varchar(20),depgx varchar(20))
    insert @t
    select 'Q001000',   '制造部','Q001' union all
    select 'Q001100',   '制一課','Q001000' union all
    select 'Q001101',   '制一組','Q001100' union all
    select 'Q001102',   '制二組','Q001100' union all
    select 'Q001103',   '制三組','Q001100'SELECT 
    a.depid as 部门id,a.depname as 部门名称,
    b.depid as 课别id,b.depname as 课别名称,
    c.depid as 组别id,c.depname as 组别名称
    FROM @t a 
    inner join @t b on a.depid = b.depgx
    inner join @t c on b.depid = c.depgx/*结果
    部门id   部门名称  课别id  课别名称  组别id   组别名称
    ----------------------------------------------------------------------------------
    Q001000 制造部 Q001100 制一課 Q001101 制一組
    Q001000 制造部 Q001100 制一課 Q001102 制二組
    Q001000 制造部 Q001100 制一課 Q001103 制三組
    */
      

  2.   

    機重型號是聯合別的表查出來的
    這個不要管它请楼主检查一下depgx列的值是否有误,例子中的depgx并不能反映三级关系.
    這個可以改
    只要能達到目的就可以了
      

  3.   

    hellowork(一两清风) 這位大哥
    高手
    謝謝啦
      

  4.   

    不知道楼主的部门,课别是不是在同一个表哦,用不同类型的参数或编号来区别无论是怎样,是表关联就可以解决问题select * from A
    inner join B
    on A.ID=B.IDinner join ,left join ,right join ,full join等等。。
      

  5.   

    表結構我寫出來了啊
    同一個表啊
    根據hellowork(一两清风)這位大哥的說法
    只是部門關系沒做好而已
    這只是三級,可是二級還是有點問題SELECT 
    a.depid as 部门id,a.depname as 部门名称,
    b.depid as 课别id,b.depname as 课别名称
    FROM  DepInfo  a 
    inner join  DepInfo b on a.depid = b.depgx
    inner join  DepInfo c on b.depid = c.depgx