我需要Oracle中select语句的帮助。由于某些复杂性,我不是在寻找程序等。我需要通过一次选择来执行此操作。
部门:
Dept_ID
-------
101
102
DepartmentFGStatus:
Dept_ID | FG_ID
------- | -------
101 | ABC
101 | XYZ
102 | ABC
CCFGMap:
CC_ID | FG_Applicable | FG_ID
------| ------------- | -------
FIN | Y | ABC
HR | N | XYZ
ACI | N |
CCStatus:
CC_ID | Status
------| -------
FIN | 01
HR | 03
ACI | 05
需要具有以下标准的Department表中所有Dept_ID的列表:
该Dept_ID的DepartmentFGStatus表中的所有FG_ID都应该有 FG_Applicable ='Y',相应CC_ID的状态应为01
例如:在上面的例子中,我只需输出Dept 102
。 101不符合条件,因为它XYZ
为FG_ID
FG_Applicable = 'N'
答案 0 :(得分:0)
您应该使用内部联接
SELECT d.Dept_ID
FROM Department d
INNER JOIN DepartmentFGStatus dfs on dfs.Dept_ID = d.Dept_ID
INNER JOIN CCFGMap m on m.fg_id = dfs.FG_ID and m.FG_Applicable ='Y'
INNER JOIN CCStatus s on m.CC_ID =s.CC_ID and s.status ='01'
答案 1 :(得分:0)
您可以尝试这样的事情:
Select
d.Dept_ID
from
Department d
inner join DepartmentFGStatus dfgs
on d.Dept_ID = dfgs.Dept_ID
where exists (
select
cm.FG_ID
from
CCFGMap cm
inner join CCStatus cs
on cm.CC_ID = cs.CC_ID
and cs.Status = '01'
where
FG_Applicable = 'Y'
and cm.FG_ID = dfgs.FG_ID
)