首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle -根据不同的条件从不同的表返回相同的数据?

Oracle -根据不同的条件从不同的表返回相同的数据?
EN

Stack Overflow用户
提问于 2020-02-20 15:44:43
回答 1查看 37关注 0票数 0

我有两个查询:一个返回表ODF_CA_OTHER中分配给团队领导( Team,ODF_CA_OTHER)的每个人/资源的ID和名称,另一个返回表PRJ_RESOURCES中具有(PRPRIMARYROLEID = 5112005)的每个资源的ID和名称。

是否有一种方法在单个查询中返回在PRJ_RESOURCES表中具有Team主角色的每个人的ID和名称,以及在ODF_CA_OTHER表中指定为Team (NL_TEAM_LEAD)的每个人的ID和名称(没有重复的名称)?

我之所以问这个问题,是因为我需要为一个查找屏幕创建这个查询,该查询包括所有的团队领导和被分配为团队领导的任何人,但并不是每个被分配为团队领导的人都必须在“资源”表中扮演一个团队领导的主要角色。

坦率地说,我完全不知道如何在一个查询中处理这个问题。

代码语言:javascript
复制
-- Resources with Team Lead primary role in PRJ_RESOURCES
SELECT DISTINCT
       SRM.ID AS ID,
       CASE
           WHEN SRM.LAST_NAME IS NULL AND SRM.FIRST_NAME IS NULL AND SRM.MIDDLE_NAME IS NULL THEN ' '
           ELSE CONCAT(CONCAT(CONCAT(SRM.LAST_NAME, ', '), SRM.FIRST_NAME), NVL(SRM.MIDDLE_NAME, ''))
       END AS NAME
FROM
       SRM_RESOURCES SRM
JOIN
       PRJ_RESOURCES PRJ ON SRM.ID = PRJ.PRID
WHERE
       PRJ.PRPRIMARYROLEID = 5112005;

-- Resources assigned as Team Lead in ODF_CA_OTHER
SELECT DISTINCT
       OTH.NL_TEAM_LEAD AS ID,
       CASE
           WHEN SRM.LAST_NAME IS NULL AND SRM.FIRST_NAME IS NULL AND SRM.MIDDLE_NAME IS NULL THEN ' '
           ELSE CONCAT(CONCAT(CONCAT(SRM.LAST_NAME, ', '), SRM.FIRST_NAME), NVL(SRM.MIDDLE_NAME, ''))
       END AS NAME
FROM
       ODF_CA_OTHER OTH
JOIN
       SRM_RESOURCES SRM ON OTH.NL_TEAM_LEAD = SRM.ID;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 16:47:53

您可以执行一个简单的union,但是在这两种情况下都要从srm_resources中进行选择,所以更快的是检查id是否存在于具有角色5112005 odf_ca_other中的的资源中。

代码语言:javascript
复制
select id, nvl(trim(last_name||' '||first_name), ' ') as name
  from srm_resources srm
  where exists (select 1 from prj_resources prj 
                  where prid = srm.id and prprimaryroleid = 5112005)
     or exists (select 1 from odf_ca_other oth 
                  where nl_team_lead = srm.id)

在这种情况下,您可能不需要distinct。无论您想要什么格式名称,如果case对您有效,请使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60323672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档