Как соединить два стола с условием - PullRequest
0 голосов
/ 16 июня 2020

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? Спасибо.

1 Ответ

0 голосов
/ 16 июня 2020

Здесь мы используем 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
...