首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用组合将null值替换为它自己的值

如何使用组合将null值替换为它自己的值
EN

Stack Overflow用户
提问于 2020-04-03 00:55:31
回答 1查看 51关注 0票数 0

我正在处理Oracle中的一个查询。我正在使用事实表作为合同ID,以及产品和材料的维度。我需要在查询中而不是数据库中有一个解决方案。

我有一个示例结果输出,其中一些合同ID的值为空值。

我无法对空值进行硬编码,因为表中有许多其他合同ID。

每个唯一的合同id都有一个产品ID,每个产品都有多个物料。我想结合特定的产品PR000349059和材料,将空合同ID替换为17270。以便合同ID的每个空值都用它自己的值替换它。

代码语言:javascript
复制
select
    fvpo_vpa_id     contract_id,
    dsai_prpr_sap_matnr    product_ID,
    dsai_sp_sap_matnr       material_ID,
    fvpo_quantity           quantity
from vpa_sp right outer join
     PP_SP
     on fvpo_dsai_id = dsai_id

RESUlT:

代码语言:javascript
复制
 CONTRACT_ID PRODUCT_ID MATERIAL_ID QUANTITY
    17270   PR000349059 SP000748364 1962898
    17270   PR000349059 SP000748366 2589732
    17270   PR000349059 SP000748370 5565604
            PR000349059 SP000010709 
            PR000349059 SP000748128 
            PR000349059 SP000748130 
            PR000349059 SP000748132 
            PR000349059 SP000748362 
EN

回答 1

Stack Overflow用户

发布于 2020-04-03 08:28:50

好的,根据你的编辑和评论,我想我明白你在找什么了。在CONTRACT_IDNULL的情况下,使用另一行中的CONTRACT_ID填充它,其中包含相同的PRODUCT_IDNOT NULL CONTRACT_ID。此查询将帮助您实现以下目标:

代码语言:javascript
复制
SELECT NVL(fvpo_vpa_id, MIN(fvpo_vpa_id) OVER (PARTITION BY dsai_prpr_sap_matnr)) contract_id,
       dsai_prpr_sap_matnr product_ID,
       dsai_sp_sap_matnr   material_ID,
       fvpo_quantity       quantity
FROM   vpa_sp
RIGHT  OUTER JOIN pp_sp ON fvpo_dsai_id = dsai_id;

这将仅在CONTRACT_IDNULL时替换它,并且我们能够找到填充了相同PRODUCT_ID的另一行。这是基于您提到的每个CONTRACT_ID应该只有一个PRODUCT_ID的假设

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

https://stackoverflow.com/questions/60996923

复制
相关文章

相似问题

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