sql:一次检索多行的信息
我想根据一个查询中的值获取行。我知道这可以使用子查询完成,但我想使用单个查询,该查询将根据给定条件使用一个查询执行并获取详细信息,然后如果详细信息包含某个值,则使用其他值获取详细信息,我想使用外部查询获取详细信息 例如: 假设一个员工在一个财政年度可以属于多个部门(a、b、c、d等),在一个财政年度,员工可以属于一个或多个部门。我想检索最近一个财政年度所有属于c部门的员工的详细信息 EMPLOYEE_DEPARTMENTS是一个包含外键(员工id和财政年度的组合)和部门id等信息的表。 外键类似于123_1718,其中1718表示财政年度,123表示员工id。如果我们检索属于c部门的员工,那么我想从其他表中检索员工的其他详细信息 我知道这可以通过编写多个SQL来完成,找出所有财政年度属于c部门的员工,然后为每个员工检查一个财政年度是否属于c部门,如果不是,则将其从列表中删除。但有没有一种方法可以让我编写pl/sql或任何东西,通过它我可以一次检索所有细节 例如:sql:一次检索多行的信息,sql,database,oracle,Sql,Database,Oracle,我想根据一个查询中的值获取行。我知道这可以使用子查询完成,但我想使用单个查询,该查询将根据给定条件使用一个查询执行并获取详细信息,然后如果详细信息包含某个值,则使用其他值获取详细信息,我想使用外部查询获取详细信息 例如: 假设一个员工在一个财政年度可以属于多个部门(a、b、c、d等),在一个财政年度,员工可以属于一个或多个部门。我想检索最近一个财政年度所有属于c部门的员工的详细信息 EMPLOYEE_DEPARTMENTS是一个包含外键(员工id和财政年度的组合)和部门id等信息的表。 外键类似
EMPLOYEE_DEPARTMENTS
————————————————————
ID_EMPFY ID_DEPARTMENT
1 3
2 1
2 2
1 3
4 1
3 2
4 3
4 2
EMPLOYEE
ID NAME ID_DEPARTMENT CITY
DEPARTMENT
ID NAME
1 a
2 b
3 c
EMPLOYEE_FINANCIALYEAR
ID ID_EMPLOYEE FINYEAR
1 123 1718
2 123 1516
3 456 1718
4 234 1718
我必须检索属于c部门和财政年度的员工,该财政年度可以是员工参与公司的任何最后一个财政年度。这意味着对于员工,我必须找到他在公司的最后一年(可以使用表employee\u FINANCIALYEAR完成),然后检查去年是否有部门作为c,以及是否有部门从employee\u部门使用ID\u EMPFY,从employee\u FINANCIALYEAR获取员工D,然后使用ID\u employee检索员工的所有详细信息
提前感谢您的帮助。您可以使用以下查询:
WITH LAST_EMPLOYEE_FINANCIAL_YEAR AS
(
SELECT *
FROM (SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY T.ID_EMPLOYEE ORDER BY T.FINYEAR DESC) ROW_NUM
FROM EMPLOYEE_FINANCIALYEAR T
)
WHERE ROW_NUM = 1
)
SELECT *
FROM LAST_EMPLOYEE_FINANCIAL_YEAR EF
INNER JOIN EMPLOYEE_DEPARTMENTS ED ON ED.ID_EMPFY = EF.ID
INNER JOIN DEPARTMENT D ON D.ID = ED.ID_DEPARTMENT
AND D.NAME = 'C';
听起来你在描述一个内部连接。如果您提供一个简单的示例表以及希望从查询中获得的输出,这可能会有所帮助。感谢您成为救世主。令人惊叹的