式の結果に基づいて2つのテーブルを内部結合できるようにします。条件付き内部結合
私がこれまでにしようとしてきた何:
INNER JOIN CASE WHEN RegT.Type = 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
ON
RReg.RegistreringsId = R.Id
REGTが参加している私は、これは参加する直前に行わ:
INNER JOIN RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id
このSQLスクリプトは動作しません。
したがって、Type
が1の場合は、テーブルTimeRegistration
に参加する必要があります。それ以外の場合は、DrivingRegistration
に参加する必要があります。
ソリューション:
私は次のことを行って、私のSELECT文で参加する:
INNER JOIN RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id
LEFT OUTER JOIN TimeRegistration AS TReg ON TReg.RegistreringsId = R.Id AND RegT.Type = 1
LEFT OUTER JOIN DrivingRegistration AS DReg ON DReg.RegistreringsId = R.Id AND RegT.Type <>1
をそれから私はこのように、RegType
に応じて、出力に正しいが、私のwhere-clause
編集:
WHERE (CASE RegT.Type WHEN 1 THEN TReg.RegistreringsId ELSE DReg.RegistreringsId END = R.Id)
、動的SQLを使用することです
を使用し、あなたの中に句を選び、の今
のJOIN LEFTを使用してクエリに両方のテーブルを入れてみてくださいあなたはそれをすることはできません! 'CASE'は、クエリのランダムな部分を動的に入れ替えるために使用することはできません。これらのテーブルは同じ構造をしていますか? –
エラーが表示されますか?もしそうなら、それは何ですか? – AndrewC