Join 如何在一个条件下连接两个表

Join 如何在一个条件下连接两个表,join,plsql,conditional-statements,Join,Plsql,Conditional Statements,Inst_计数和Inst_类型必须始终相等。 但Card_Group和Txn_Type列必须在另一个表中与默认值(-1)匹配(如果不存在)。 如何编写这个sql? 谢谢。这里我们使用的是外部联接,它将所有表的值设置为一个结果集(您也可以使用联合所有)。然后,我们对每个表使用左连接,以确保每个列都有其值,而其他列则没有。现在,您可以使用自己的查询尝试此操作。如果你不能达到你的目标,那么我建议你收集你的样本到DBFIDLE链接。然后我们可以做进一步的解释 TABLO1 Inst_count

Inst_计数和Inst_类型必须始终相等。 但Card_Group和Txn_Type列必须在另一个表中与默认值(-1)匹配(如果不存在)。 如何编写这个sql?
谢谢。

这里我们使用的是
外部联接
,它将所有表的值设置为一个结果集(您也可以使用
联合所有
)。然后,我们对每个表使用左连接,以确保每个列都有其值,而其他列则没有。现在,您可以使用自己的查询尝试此操作。如果你不能达到你的目标,那么我建议你收集你的样本到DBFIDLE链接。然后我们可以做进一步的解释


TABLO1
Inst_count    Inst_Type    Card_Group    Txn_Type    Comm_rate
----------    ---------    ----------    --------    ---------
2             N            -1            -1          1,70
2             N            36            -1          1,71
2             N            37            -1          1,72
2             V            -1            -1          1,73
2             V            36            -1          1,74
2             V            37            -1          1,75



TABLO2
Inst_count    Inst_Type    Card_Group    Txn_Type    Isk_rate    Day
----------    ---------    ----------    --------    --------    ---
2             N            -1            -1          1,0         10
2             N            36            -1          1,1         11
2             N            37            -1          1,2         12
2             V            -1            -1          1,3         13
2             V            36            -1          1,4         14
2             V            38            -1          1,5         15


Result_Table

Inst_count    Inst_Type    TABLO1.Card_Group    TABLO2.Card_Group   TABLO1.Txn_Type    TABLO2.Txn_Type    Isk_rate    Day    Comm_rate
----------    ---------    -----------------    -----------------   ---------------    ---------------    --------    ---    ---------
2             N            -1                   -1                  -1                 -1                 1,0         10     1,70
2             N            36                   36                  -1                 -1                 1,1         11     1,71
2             N            37                   37                  -1                 -1                 1,2         12     1,72
2             V            -1                   -1                  -1                 -1                 1,3         13     1,73
2             V            36                   36                  -1                 -1                 1,4         14     1,74
2             V            -1                   38                  -1                 -1                 1,5         15     1,73
2             V            37                   -1                  -1                 -1                 1,3         13     1,75         


霍卡蒙塞利克勒索克·泰克勒。在尤卡里达,科努尤·克拉玛亚·阿尔·塔伊姆·德塔伊尔·比尔基尔·德拉伊尔·科努尤·克拉玛亚·阿尔·塔伊姆·尤卡里达(Daha detaylıbirşekilde konuyu aıkarıda)。Yorumlarınırica edeceğim:)Şimdiden teşekküller。如果您仅使用Card_Group和Card_Group将这两个表合并,您的查询将变得复杂。在我的示例中,我将解释如何使用sql。检查一下。
SELECT DISTINCT NVL (A.COL1, A1.COL1) COL1A,
                NVL (B.COL1, B1.COL1) COL1B,
                NVL (A.COL2, A1.COL2) COL2,
                NVL (A.COL3, A1.COL3) COL3,
                NVL (B.COL3, B1.COL3) COL4
  FROM TABLEA A
       FULL OUTER JOIN TABLEB B ON B.COL1 = A.COL1
       LEFT OUTER JOIN TABLEB B1 ON B1.COL1 = -1
       LEFT OUTER JOIN TABLEA A1 ON A1.COL1 = -1