Я хочу, чтобы внутреннее объединение двух таблиц основано на результате выражения.
То, что я пытался до сих пор:
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- script не работает.
Итак, в целом, если Type равно 1, тогда он должен присоединиться к таблице TimeRegistration else, к которой он должен присоединиться на 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)