Я хочу, чтобы внутреннее объединение двух таблиц основано на результате выражения.
То, что я пытался до сих пор:
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)