я хочу смочь к внутреннему объединению две таблицы на основе результата выражения.
, Что я пробовал до сих пор:
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 не работает.
Так, в целом, если Тип
равняется 1, то он еще должен присоединиться на таблице TimeRegistration
, он должен присоединиться на DrivingRegistration
.
Решение:
В моем избранном операторе я выполнил следующие соединения:
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 (CASE RegT.Type WHEN 1 THEN TReg.RegistreringsId ELSE DReg.RegistreringsId END = R.Id)