我希望能夠根據表達式的結果內聯兩個表。有條件的內部聯接
我一直在試圖至今:
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)
你不能這樣做! 'CASE'不能用於動態交換進出查詢的隨機部分。這些表具有相同的結構嗎? –
你有錯誤嗎?如果是這樣,那是什麼? – AndrewC