sql >> データベース >  >> RDS >> Sqlserver

条件付きJOINステートメントSQLServer

    イニシャルに参加することで、あなたが求めているものがうまくいくと思います 両方のOption_Aへのテーブル およびOption_B LEFT JOINを使用する 、次のようなものが生成されます:

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

    コード例:

    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
    

    これを実行すると、NULLのセットを「無視」します。ここでの追加のトリックはSELECT行にあり、ここでNULLフィールドをどうするかを決定する必要があります。 Option_AテーブルとOption_Bテーブルが類似している場合は、COALESCEを使用できます。 (例のように)最初のNONNULL値を返す関数。

    もう1つのオプションは、Option_AフィールドとOption_Bフィールドをリストし、ResultSetを使用しているものは何でも許可するだけです。 使用するフィールドの決定を処理します。



    1. WindowsにMySQLをインストールするためのステップバイステップガイド

    2. T-SQLステートメントのプレフィックスNの意味は何ですか?いつ使用する必要がありますか?

    3. ダウンタイムなしでPostgreSQL11をPostgreSQL12にアップグレードする方法

    4. Oracleを使用する場合、Fluent NHibernateを使用してバッチフェッチを実装するにはどうすればよいですか?