Oracle
 sql >> Baza danych >  >> RDS >> Oracle

warunkowe przyłączenie w wyroczni

Następujący wynik:

| 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 |

zostało utworzone przez to zapytanie:

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 zostało dodane, ponieważ drugie lewe (zewnętrzne) złącze powoduje niepożądane powtórzenia na wyjściu.

zapoznaj się z tym sqlfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL — wskazówki dotyczące natychmiastowego wydruku / drukowania z konsoli

  2. Zagnieżdżony kursor w kursorze

  3. ORA-20001 w R12 Zbierz statystyki schematu dotyczące 11g (FND_HISTOGRAM_COLS)

  4. Wprowadzenie do zbiorczego zbierania danych PL/SQL w bazie danych Oracle

  5. Używaj TOP lub Rank, gdy znajdujesz kilka pierwszych lub najwięcej obserwacji