我希望能够根据表达式的结果内连接两个表。
到目前为止我一直在尝试的:
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)
尝试使用 LEFT JOIN 将两个表放入查询中
LEFT JOIN TimeRegistration TR ON r.rid = TR.Id AND RegT.type =1
LEFT JOIN DrivingRegistration DR ON r.rid = DR.Id AND RegT.type <>1
现在,在您的 select 子句中,使用
CASE RegType.Type WHEN 1 THEN TR.SomeField ELSE DR.someField END as SomeField
另一种选择是使用动态 SQL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)