【问题标题】:Multiple critieria left join, how to know which criteria is not being met多个条件左连接,如何知道哪些条件没有被满足
【发布时间】:2019-04-04 04:03:05
【问题描述】:

我有以下代码,用于在需要满足四个条件(Id、Contract_Type、Sub_Contract_Number 和 Percentage)上进行左连接。

我有以下 Left Join 语句:

select a.* from table_1 as a
left join table_2 as b
on a.id = b.id
and a.Contract_Type = b.Contract_Type
and a.Sub_Contract_Number = b.Sub_Contract_Number
and a.Percentage = b.Percentage

样本数据:

Table 1
1    G7   12   .40
1    G7   13   .60

Table 2
1    G7   18   .39
1    G1   13   .61

如何确定左连接不满足哪个条件?我有一个包含 9000 多个不同 id 的庞大数据集,需要不满足什么条件,这样我才能确定这两个表有什么区别。此外,有没有办法将范围设置在百分比的小数位内,因此由于百分之一的百分比差异,它不会显示为两个表之间的差异。谢谢

【问题讨论】:

  • 您的预期输出是什么,您希望如何报告部分匹配?
  • 如果您从联接中删除条件,那么您可以从新结果中选择条件作为布尔值并将其用作子查询组并在这些布尔列上聚合。不过,您不清楚所需流程的输入和输出到底是什么。请提供minimal reproducible example 输入和所需的输出和明确的规范。

标签: sql sql-server left-join multiple-conditions


【解决方案1】:

您的问题的第二部分可以通过对您的查询进行简单修改来回答:

select a.*
from table_1 a left join
     table_2 b
     on a.id = b.id and
        a.Contract_Type = b.Contract_Type and
        a.Sub_Contract_Number = b.Sub_Contract_Number and
        a.Percentage >= b.Percentage - 0.01 and
        a.Percentage <= b.Percentage + 0.01 ;

对于你问题的第一部分,我建议你问另一个问题。提供想要的结果。目前尚不清楚您要做什么。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 2017-05-20
    • 2016-12-28
    • 2019-04-29
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    相关资源
    最近更新 更多