【问题标题】:How to join two table with a conditon如何使用条件连接两个表
【发布时间】:2020-06-16 16:44:46
【问题描述】:

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         

Inst_count 和 Inst_Type 必须始终相等。 但是 Card_Group 和 Txn_Type 列必须在另一个表中与默认值(-1)匹配(如果不存在)。 这个sql怎么写? 谢谢。

【问题讨论】:

    标签: join plsql conditional-statements


    【解决方案1】:

    这里我们使用OUTER JOIN 将所有表值设置为一个结果集(您也可以为此使用UNION ALL)。然后我们对每个表使用左连接,以确保每列都有其没有其他值的值。现在你可以用你自己的查询来试试这个。如果您无法实现目标,那么我建议您将样本收集到 dbfiddle 链接中。然后我们可以做进一步的解释。

    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
    

    【讨论】:

    • Hocam öncelikle çok teşekkürler。 Daha detaylı bir şekilde konuyu açıklamaya çalıştım yukarıda。 Yorumlarını rica edeceğim :) Şimdiden teşekkürler。
    • 如果您只使用 Card_Group 和 Card_Group 连接这两个表,您的查询将变得复杂。在我的示例中,我解释了如何使用 sql。检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多