【问题标题】:Fetch uncommon records based on status根据状态获取不常见的记录
【发布时间】:2023-04-03 03:49:02
【问题描述】:

我有两张桌子。我需要根据状态从 T2 中获取 T1 中不存在的记录。 我不确定我是否会从 T1 获取所有记录。我了解原因,但不确定如何解决。可以请指导一下吗?

T1

和T2

输出:

我试过的查询。

SELECT T2.*
FROM T2 LEFT OUTER JOIN T1 
ON T2.DOC_NO=T1.DOC_NO
WHERE T2.STATUS='Cleared' and T1.STATUS !='Cleared' 

【问题讨论】:

  • 。 . “我需要根据状态从 T2 中获取 T1 中不存在的记录。”这不是对您想要做什么的清晰描述。你能提供更多细节吗?
  • 如果在 T1 和 T2 中都清除了 DOC_NO,我不应该从 T2 带上那个文件号..

标签: sql oracle oracle11g


【解决方案1】:

您可以按如下方式使用NOT EXISTS

SELECT T2.*
  FROM T2 
 WHERE NOT EXISTS 
  (SELECT 1 FROM T1
    WHERE T1.DOC_NO = T2.DOC_NO
      AND T1.STATUS = 'Cleared');

【讨论】:

    【解决方案2】:

    根据您提供的示例,尚不清楚如何使用状态过滤。看起来你需要 MINUS 运算符:

    select doc_no, status, amount from t2
    minus
    select doc_no, status, amount from t1;
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多