Я хочу иметь возможность внутреннего объединения двух таблиц на основе результата выражения.
То, что я пытался до сих пор:
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
Затем я отредактировал свой where-clause
для вывода правильного, в зависимости от RegType
, например:
WHERE (CASE RegT.Type WHEN 1 THEN TReg.RegistreringsId ELSE DReg.RegistreringsId END = R.Id)