只是想知道是否有人可以帮助我,我正在运行引用不同表格的案例陈述。它需要查找汽车的品牌,型号和年份以及位置(FL,FR,BL,BR)并返回套件编号。
同一车辆的表格中最多可存在4个条目,其中拟合位置栏指定要选择的套件编号,以便仅返回1个结果我相信我需要将其放在查询的where部分,如果我在其他任何地方添加它,则返回超过1个值。
然而,车辆总是存在4个条目。 FL& amp; BL但不是FR和BR。因为我将位置列添加到where部分' null'返回。没有返回任何东西,我希望它返回案例陈述的下一部分。
这是sql的工作原因,因为一个工具包可用于FL
SELECT CAST (CASE WHEN '002' != 'UNI' THEN T0.U_MPLFK ELSE 'NOKIT' END AS VARCHAR)
FROM
[@CSOL_MILFORD] T0 INNER JOIN [dbo].[@CSOL_VEHICLES] T1 ON T0.[U_VehicleRef] = T1.[U_VehicleRef]
WHERE
T1.U_Manufacturer = 'Ford'
AND
T1.U_Model = 'Galaxy'
AND
T0.U_MPLFK > 1
AND
T0.U_FittingPosition = 'FL'
但是当它变为
时SELECT CAST (CASE WHEN '002' != 'UNI' THEN T0.U_MPLFK ELSE 'NOKIT' END AS VARCHAR)
FROM
[@CSOL_MILFORD] T0 INNER JOIN [dbo].[@CSOL_VEHICLES] T1 ON T0.[U_VehicleRef] = T1.[U_VehicleRef]
WHERE
T1.U_Manufacturer = 'Ford'
AND
T1.U_Model = 'Galaxy'
AND
T0.U_MPLFK > 1
AND
T0.U_FittingPosition = 'FR'
我没有重新调整价值,我希望它返回' NOKIT'
非常感谢,
Roisin
答案 0 :(得分:0)
left join
如果null
条件失败,则会返回on
列的行。因此,您可以将条件移至on
的{{1}}部分。类似的东西:
left join
在...
FROM @CSOL_VEHICLES T1
LEFT JOIN
@CSOL_MILFORD T0
ON T0.U_VehicleRef = T1.U_VehicleRef
AND T0.U_MPLFK > 1
AND T0.U_FittingPosition = 'FR'
WHERE T1.U_Manufacturer = 'Ford'
AND T1.U_Model = 'Galaxy'
子句而不是on
子句中使用条件意味着您将获得where
而不是行的行。