要表达的Grid样子是:
部门编号,部门名,附属部门1,附属部门2.附属部门n表结构上是,DeptID,DeptNo,DeptName,ParentID
表内容是:
1 A 部门A null
2 B 部门B 1
3 C 部门C 1
4 D 部门D nullSQL语句:
select a.DeptID,a.DeptNo,a.DeptName,b.DeptID,b.DeptNo,b.DeptName
from tbl_Dept as a
left join tbl_Dept as b on
a.DeptID=b.ParentID这样可以获取
1 A 部门A 2 B 部门B
1 A 部门A 3 C 部门C 
4 D 部门D null null null
...
类似这个结构。我也只能用DBGrid显示上面的样子。
有什么方法,可以变成 "部门编号,部门名,附属部门1,附属部门2.附属部门n"的样式。
如果用dev的Grid能解决的话,就更好了。请高手指点下。谢谢。

解决方案 »

  1.   

    这样可以获取 
    1,A,部门A,2,B,部门B 
    1,A,部门A,3,C,部门C 
    4,D,部门D,null,null,null 
      

  2.   

    用dev的dxdbtreelist吧,你可以把查询组织成一个带上下级关系的,那样就可以在dev中以树形显示了
      

  3.   

    问题是,我的格式已经被给定了。
    不能用tree,不能用主从。
      

  4.   

    你那不行,因为你附属部门个数不定,所以你得列就不定,别用dbgrid了,用stringgrid或listview,做吧
      

  5.   

    dev 生成二個VIEW,主表,從表即可  主表:  tbl_Dept   中PARENT為NULL值的數據  
      從表:  在主表的DATASET OPEN時根據  parent  建立即可。
      

  6.   

    用存储过程比较好
    1.求部门的最多附属部门个数
    declare @CountDept Integer
    select @CountDept=max(deptid)
    from (
    select count(a.DeptID) as DeptId
    from tbl_Dept as a 
    left join tbl_Dept as b on a.DeptID=b.ParentID 
    group by a.deptid
    ) a
    2.建立临时表, 产生@CountDept个附属部门字段
    3.以你的Sql语句建立Cousor
    declare c_dept cursor
    for
    select a.DeptID,a.DeptNo,a.DeptName,b.DeptID,b.DeptNo,b.DeptName 
    from tbl_Dept as a 
    left join tbl_Dept as b on a.DeptID=b.ParentID 
    4.读取Cousor, 填入临时表中
    5.select 临时表