我希望能够根据表达式的结果内联两个表。有条件的内部联接
我一直在试图至今:
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