1
                                         
        身份证名称部门经理       
        101 穆克什 SW               
        102 公羊 SW 101       
        103 假 SW 101       
        104 拉胡尔 SW 101       
        105 拉杰特总部               
        第106章 105         
        107 萨钦总部 105       

我有这张表,我想要如下所示的输出

                                  
        部门经理姓名          
        西南穆克什拉姆       
                          假          
                          拉胡尔         
        总部拉贾特·阿基勒什          


                                    

4

3 回答 3

1

请根据需要查找以下查询。我创建了 MyTest 作为您需要替换的表名。

SELECT 
    Case WHEN ISNULL(SecondTable.Id,0) = 0
         THEN FirstTable.Dept
         ELSE ''
    END As Department, 

    Case WHEN ISNULL(SecondTable.Id,0) = 0
         THEN Manager.Name 
         ELSE ''
    END  As Manager, 
    FirstTable.Name FROM MyTest As FirstTable
LEFT JOIN MyTest As SecondTable ON
    SecondTable.ID = (SELECT Top 1  MyTest.ID
                      FROM MyTest 
                      WHERE MyTest.Manager = FirstTable.Manager
                        AND MyTest.dept = FirstTable.dept
                        AND MyTest.Id < FirstTable.Id
                      ORDER BY MyTest.ID Desc) 
LEFT JOIN MyTest As Manager On Manager.Id = FirstTable.Manager  WHERE FirstTable.Manager <> 0 ORDER BY FirstTable.dept, FirstTable.ID
于 2013-10-25T09:20:48.057 回答
0

这仅在 sql 中是不可能的。您可以做的是获取他们每个人的 dep 和 manager 名称。

SELECT t1.Dept AS DEP, t2.name AS MANAGER, t1.name AS NAME
FROM table1 t1
INNER JOIN table1 t2 ON t1.manager = t2.id

sqlfiddle demo

这将返回如下内容:

DEP MANAGER NAME
SW  Mukesh  Ram
SW  Mukesh  sham
SW  Mukesh  rahul
HQ  Rajat   akhilesh
HQ  Rajat   sachin

然后在您选择的编程语言中,您将进行格式化。

于 2013-10-25T09:02:44.260 回答
0

您正在寻找的是检索分层数据,使用 sql 2008 您可以使用公用表表达式。查看此链接Recursive Queries Using Common Table Expressions数据输出是平坦的(它将为每一行重复 SW 和 Mukesh)。希望能帮助到你

于 2013-10-25T08:56:52.720 回答