首页 > 解决方案 > Toad/Oracle 中具有多个表/内部联接的 MAX DATE

问题描述

我只使用 Toad/Oracle 几个星期,所以仍在学习编码等我了解 Access 中的 SQL 代码,现在正在尝试学习 Oracle。

我需要从 tbl BIC/AZUCDMO0100 返回 UCMRBILDAT 的最大日期,但只能从链接的 tbl LH_DAT 中包含的合同中返回

我也尝试过拥有 MAX UCMRBILDAT,但这没有用。

UCMRBILDAT (/BIC/AZUCDMO0100)

UC_MRESULT (/BIC/AZUCDMO0100)

UC_MRSTAT (/BIC/AZUCDMO0100

UC_MRCAT (/BIC/AZUCDMO0100)

CONTRACT_NUMBER (LH_DAT)

UC_MR_NUMB (/BIC/AZUCDMO0100) + (/BIC/AZUCDMO0200)

SELECT UCMRBILDAT,
   UC_MRESULT,
   UC_MRSTAT,
   UC_MRCAT
  FROM LH_DAT
  (  SELECT CONTRACT_NUMBER, MAX (UCMRBILDAT) MXBD
        FROM SAPSR3."/BIC/AZUCDMO0100"
    GROUP BY CONTRACT_NUMBER) GMR    
   LEFT OUTER JOIN SAPSR3."/BIC/AZUCDMO0200"
      ON (CONTRACT_NUMBER = UCCONTRACT)
   INNER JOIN SAPSR3."/BIC/AZUCDMO0100"
      ON ("/BIC/AZUCDMO0200".UC_MR_NUMB = "/BIC/AZUCDMO0100".UC_MR_NUMB)
 WHERE     CONTRACT_NUMBER = '2000014420'
   AND UCMRBILDAT = MXBD
   AND MR.CONTRACT_NUMBER = GMR.CONTRACT_NUMBER

来自 BIC/AZUCDMO0100 的最大账单日期,但仅适用于表 LH_DAT 中包含的合同

在下面的脚本上编辑UCMRBILDAT 的 NEED MAX DATE

SELECT CONTRACT_NUMBER,
   UCMRBILDAT,
   UC_MRESULT,
   UC_MRCAT
  FROM LH_DAT
   LEFT OUTER JOIN SAPSR3."/BIC/AZUCDMO0200"
      ON (CONTRACT_NUMBER = UCCONTRACT)
   INNER JOIN SAPSR3."/BIC/AZUCDMO0100"
      ON ("/BIC/AZUCDMO0200".UC_MR_NUMB = "/BIC/AZUCDMO0100".UC_MR_NUMB)
 WHERE     CONTRACT_NUMBER = '2000014420'
   AND "/BIC/AZUCDMO0200".SOURSYSTEM = 'SP'
   AND "/BIC/AZUCDMO0200".UCDELE_IND <> 'X'

标签: oraclejoinmaxdate

解决方案


要获取您想要使用"BIC/AZUCDMO0100".UCMRBILDAT的链接值的最大值:LH_DAT

SELECT MAX(ba.UCMRBILDAT)
  FROM SAPSR3."BIC/AZUCDMO0100" ba
  INNER JOIN LH_DAT ld
    ON ld.some_field = ba.some_field

必须有链接在一起的字段"BIC/AZUCDMO0100"LH_DAT但在您的查询中没有指定它们。找到这些字段,将它们插入到上面的查询中,您应该会得到您正在寻找的结果。


推荐阅读