1

マネージャーと担当者が含まれるテーブルEmployeesがあります。Manager 1(アルファベット順)、次にそのManager1の下のすべての担当者(アルファベット順)、次にManager2とManager2の下のすべての担当者を取得できるストアドプロシージャが必要です。

各担当者の列にはManagerのEmployeeIDを持つすべての従業員の列「Manager」があり、マネージャーの場合はnullがあります。また、列ismanagerもあり、マネージャーの場合は1、担当者の場合は0になります。

やってみましたが、ロジックがどこか間違っています。これはにありSQL Server 2005ます。

前もって感謝します!!

Select * from Employees
groupby IsManager, EmployeeID
4

2 に答える 2

1

あなたがしたいのは、マネージャーIDで注文し、次にismanagerdescで注文することです。マネージャーはマネージャー列に自分のIDを持っていないため、caseステートメントを使用して修正します。SQLでそれを行う方法の2つの例を次に示します。

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-テストされていない場合、タイプミスがある可能性があります。

于 2012-09-26T15:07:31.843 に答える
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
于 2012-09-26T15:10:12.187 に答える