身份证名称部门经理 101 穆克什 SW 102 公羊 SW 101 103 假 SW 101 104 拉胡尔 SW 101 105 拉杰特总部 第106章 105 107 萨钦总部 105
我有这张表,我想要如下所示的输出
部门经理姓名 西南穆克什拉姆 假 拉胡尔 总部拉贾特·阿基勒什
身份证名称部门经理 101 穆克什 SW 102 公羊 SW 101 103 假 SW 101 104 拉胡尔 SW 101 105 拉杰特总部 第106章 105 107 萨钦总部 105
我有这张表,我想要如下所示的输出
部门经理姓名 西南穆克什拉姆 假 拉胡尔 总部拉贾特·阿基勒什
请根据需要查找以下查询。我创建了 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
这仅在 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
这将返回如下内容:
DEP MANAGER NAME
SW Mukesh Ram
SW Mukesh sham
SW Mukesh rahul
HQ Rajat akhilesh
HQ Rajat sachin
然后在您选择的编程语言中,您将进行格式化。
您正在寻找的是检索分层数据,使用 sql 2008 您可以使用公用表表达式。查看此链接Recursive Queries Using Common Table Expressions数据输出是平坦的(它将为每一行重复 SW 和 Mukesh)。希望能帮助到你