【问题标题】:MAX DATE with Multiple tables/Inner Joins in Toad/OracleToad/Oracle 中具有多个表/内部联接的 MAX DATE
【发布时间】:2019-01-14 11:48:47
【问题描述】:

我只使用 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 的最大日期在下面的脚本

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'

【问题讨论】:

  • 不清楚,你真正想要什么。您说您想从表“BIC/AZUCDMO0100”中选择最大 UCMRBILDAT,但在您的查询中您选择了 LH_DAT 行。那你想要哪个?请描述你的桌子。它们的键是什么,它们有什么关系? (顺便说一下,您的查询无效,因为FROM LH_DAT (...) 不是有效的 SQL。)
  • 如果您想显示最大 UCMRBILDAT,您是想显示每份合约的最大 UCMRBILDAT 还是最大 UCMRBILDAT?顺便说一句,如果您显示示例数据和预期结果,这将有所帮助,因此我们会看到您希望从哪个表中选择哪些列。
  • 你的列名真的像/BIC/AZUCDMO0100吗?
  • 抱歉,我是 Oracle 和 Stack 的新手。
  • 有 3 个表 LH_DAT(包含合同号)链接到合同号上的表 '/BIC/AZUCDMO0200',然后这个 **0200 链接到'/BIC/AZUCDMO0100' 上的' UC_MR_NUMB'。

标签: oracle join maxdate


【解决方案1】:

要获得"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 链接在一起的字段,但在您的查询中未指定它们。找到这些字段,将它们插入到上面的查询中,您应该会得到您正在寻找的结果。

【讨论】:

  • 有 3 个表 LH_DAT(包含合同号)链接到合同号上的表 /BIC/AZUCDMO0200,然后这个**0200 链接到 UC_MR_NUMB 上的 /BIC/AZUCDMO0100。 ——
猜你喜欢
  • 2020-10-25
  • 2019-08-10
  • 2018-06-19
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
相关资源
最近更新 更多