2012-09-26 81 views
1

我有一個表管理員和代表在其中的員工。我想要一個存儲過程,可以獲得管理器1(字母順序),然​​後在該管理器下的所有代表1(按字母順序),然​​後管理器2和所有代表在管理器2下。分組由管理員和員工表中的代表

對於每個Rep都有該列中的Manager的EmployeeID的所有員工都有一個「經理」列,管理員爲空。並且還有一個專欄管理員,其中經理1和經銷商0都是1。

我試過這樣做,但邏輯是不正確的。這是在SQL Server 2005

預先感謝您!

Select * from Employees 
groupby IsManager, EmployeeID 
+0

您使用的是什麼RDBMS? –

+2

請提供樣本數據和期望的輸出。 – RedFilter

回答

1

你想要做的是爲了通過管理員ID,然後ORDER BY IsManager的遞減。 由於經理在經理專欄中沒有自己的ID,因此您已使用案例聲明來解決該問題。以下是如何做到這一點的SQL兩個例子:

WITH fixup AS 
(
    SELECT CASE MANAGER = 0 THEN EMPLOYEEID ELSE MANAGER END as ManGroup, * 
    FROM Employees 
) 
SELECT * from fixup 
ORDER BY ManGroup, ismanager DESC 

SELECT * 
FROM Employees 
ORDER BY CASE MANAGER = 0 THEN EMPLOYEEID ELSE MANAGER END, ismanager DESC 

NB - 沒有測試可能有錯別字。

0
select case when isManager=1 then man.name else 'Unmanaged' end as managerName, 
     emp.name 
from employees emp left join employees man on emp.manager = man.employeeId 
order by case when isManager=1 then 0 else 1 end, 
     case when isManager=1 then man.name else 'Unmanaged' end, 
     emp.name 
+0

他希望經理先列出。 – Hogan