2

次のデータを持つ表 emp があります。

EmpID    EmpName   MgrID 

100     King        NULL
101     Smith       100
102     Shine       100
103     Racy        102

今、私は従業員名(上司)と従業員数(部下)をこのように表示したい

BOSS       SUBORDINATES

BLAKE                 5

CLARK                 1

FORD                  1

JONES                 2

KING                  3

SCOTT                 1

SQL Server 2008 でこのテーブルをクエリする方法を教えてください。

試行されたクエリ:

select e.first_name as ename,m.first_name as mname from employees e,employees m where e.manager_id=m.employee_id
4

2 に答える 2

5
  • 自己参加することから始めますEmpID=MgrID
  • とでグループMgrIDEmpName
  • 選択EmpNameしてcount(*)

これをSQLに変換するのは機械的です。

SELECT b.EmpName, COUNT(*)
FROM Employee e
JOIN Employee b ON b.EmpID=e.MgrID
GROUP BY b.EmpID, b.EmpName
于 2012-07-10T18:22:53.650 に答える
1
CREATE TABLE test (
   EmpID INT,
   EmpName VARCHAR(100),
   MgrID INT)

INSERT INTO test VALUES (100, 'King', NULL),
                        (101, 'Smith', 100),
                        (102, 'Shine', 100),
                        (103, 'Racy', 102)

SELECT t1.EmpName AS Boss, 
       COUNT(*) AS Subordinates
FROM test AS t1 INNER JOIN test AS t2 ON t1.EmpID = t2.MgrID
GROUP BY t1.EmpName
于 2012-07-10T18:31:08.043 に答える