我想選擇那些不監督任何員工的主管,例如 Sup4
注意:所有主管都是員工本人,因此在員工列中,但由于主管不受任何人監督,因此相應的主管列為空。
表:EmpData
| PK | 員工 | 導師 | 支持標志 |
|---|---|---|---|
| 1 | 企業管理人員 | 蘇普1 | e |
| 2 | 蘇普1 | 空值 | s |
| 3 | 雇員B | 支持2 | e |
| 4 | 支持2 | 空值 | s |
| 5 | 企業管理委員會 | 蘇普3 | e |
| 6 | 蘇普3 | 空值 | s |
| 7 | 蘇普4 | 空值 | s |
我知道更好的方法是為 Employee 和 Supervisor 創建一個單獨的表,但我只是好奇是否有任何我缺少的使用 join 的方法。
我試過關注,但它回傳 0 條記錄。
在 Oracle Live SQL 中執行:
CREATE TABLE EmpData(
PK number(38) GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1) PRIMARY KEY,
Employee varchar2(100) NOT NULL,
Supervisor varchar2(100),
SupOrEmpFlag varchar2(100) NOT NULL
);
INSERT INTO EmpData (Employee , Supervisor, SupOrEmpFlag)
SELECT 'EmpA', 'Sup1', 'e' FROM dual UNION ALL
SELECT 'Sup1', null, 's' FROM dual UNION ALL
SELECT 'EmpB', 'Sup2', 'e' FROM dual UNION ALL
SELECT 'Sup2', null, 's' FROM dual UNION ALL
SELECT 'EmpC', 'Sup3', 'e' FROM dual UNION ALL
SELECT 'Sup3', null, 's' FROM dual UNION ALL
SELECT 'Sup4', null, 's' FROM dual
SELECT *
FROM EmpData sup
JOIN EmpData emp
on emp.Employee = sup.Supervisor
and sup.SupOrEmpFlag = 's'
JOIN EmpData nemp
on nemp.Employee = emp.Employee
and nemp.Employee <> emp.Employee
uj5u.com熱心網友回復:
一種選擇是通過使用分層查詢來確定,例如
SELECT NVL(supervisor,employee) AS supervisor
FROM EmpData e
CONNECT BY PRIOR employee = supervisor
GROUP BY NVL(supervisor,employee)
HAVING MAX(level) = 1
或使用具有為 HAVING 子句提供的條件聚合的查詢,例如
SELECT NVL(supervisor,employee) AS supervisor
FROM EmpData e
GROUP BY NVL(supervisor,employee)
HAVING MAX(CASE WHEN suporempflag = 's' AND supervisor IS NULL THEN 0 ELSE 1 END) = 0
Demo
uj5u.com熱心網友回復:
SELECT *
FROM Supervisors
WHERE Supervisor NOT IN (SELECT Supervisor FROM Employees)
uj5u.com熱心網友回復:
首先,您必須在 column 中獲取串列主管Supervisor。然后獲取不在第一個串列中并具有標志的員工串列"s"。
查詢將是這樣的。
SELECT Employee
FROM EmpData
WHERE Employee NOT IN (SELECT DISTINCT Supervisor FROM EmpData) AND SupOrEmpFlag = "s";
uj5u.com熱心網友回復:
提這個。
WITH SupervisorList AS
(
SELECT PK, EMPLOYEE
FROM EmpData
WHERE SupOrEmpFlag = 's'
)
SELECT s.*
FROM SupervisorList S
LEFT JOIN EmpData E
ON S.EMPLOYEE = E.Supervisor
WHERE E.PK IS NULL
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417568.html
標籤:
上一篇:甲骨文頂點20.1。帶有“卡片”模板的報告,如何在點擊卡片時重定向到另一個頁面?
下一篇:如何在sql中呼叫動態日?
