sql >> Database teknologi >  >> RDS >> Oracle

betinget deltagelse i orakel

Følgende resultat:

| TAB1_COL1 | TAB1_COL2 | LKP_COL3 | |-----------|-----------|----------| | 10 | 101 | 50 | | 11 | 102 | 50 | | 12 | 101 | 99.99 | | 13 | 103 | 40 | | 13 | 103 | 60 | | 14 | 104 | 100 | | 15 | 108 | 20 | | 15 | 108 | 80 | | 16 | 102 | 99.99 |

blev produceret af denne forespørgsel:

SELECT DISTINCT
      tab1.tab1_col1
    , tab1.tab1_col2
    , COALESCE(lkp1.lkp_col3, lkp2.lkp_col3, 99.99) "LKP_COL3"
FROM tab1
      LEFT JOIN lkp1
                  ON tab1.tab1_col1 = lkp1.lkp_col1
                        AND tab1.tab1_col2 = lkp1.lkp_col2
                        AND lkp1.lkp_col4 = 'PICK'
      LEFT JOIN lkp1 lkp2
                  ON tab1.tab1_col1 = lkp2.lkp_col1
                        AND lkp2.lkp_col4 = 'PICK'
ORDER BY
      tab1.tab1_col1
    , tab1.tab1_col2
;
 

DISTINCT blev tilføjet, fordi den anden venstre (ydre) join producerer uønsket gentagelse i outputtet.

se denne sqlfiddle




  1. INSERT Statement i PL/SQL mislykkes i Oracle-databasen

  2. Tjek begrænsning for mysql

  3. Den nemmeste måde at lave en rekursiv selv-join på?

  4. MySqlConversionException ved adgang til DateTime-feltet fra DataReader