Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Warunkowa instrukcja JOIN SQL Server

Myślę, że to, o co prosisz, zadziała, gdy dołączysz do Początkowego tabela do obu Option_A i Option_B za pomocą LEFT JOIN , co wygeneruje coś takiego:

Initial LEFT JOIN Option_A LEFT JOIN NULL
OR
Initial LEFT JOIN NULL LEFT JOIN Option_B

Przykładowy kod:

SELECT i.*, COALESCE(a.id, b.id) as Option_Id, COALESCE(a.name, b.name) as Option_Name
FROM Initial_Table i
LEFT JOIN Option_A_Table a ON a.initial_id = i.id AND i.special_value = 1234
LEFT JOIN Option_B_Table b ON b.initial_id = i.id AND i.special_value <> 1234

Kiedy już to zrobisz, „ignorujesz” zestaw wartości NULL. Dodatkowa sztuczka znajduje się w linii SELECT, w której musisz zdecydować, co zrobić z polami NULL. Jeśli tabele Option_A i Option_B są podobne, możesz użyć COALESCE funkcja zwracająca pierwszą wartość NON NULL (jak w przykładzie).

Inną opcją jest to, że będziesz musiał po prostu wypisać pola Option_A i Option_B, i niech wszystko, co używa ResultSet do obsługi określania, których pól użyć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego SQL Server zaokrągla wyniki dzielenia dwóch liczb całkowitych?

  2. Jakie jest znaczenie przedrostka N w instrukcjach T-SQL i kiedy należy go używać?

  3. Efektywnie konwertuj wiersze na kolumny w serwerze sql

  4. Kiedy zasada DRY nie ma zastosowania:operacje BITWISE w SQL Server

  5. Instalowanie Ubuntu 18.04 dla SQL Server 2019 na maszynie wirtualnej przy użyciu VMware Workstation