如果在 SSMS 中不满足条件,则 Where 子句 returns 没有任何内容
Where clause returns nothing if condition is not met in SSMS
这是我在 SS Management Studio 中的查询
SELECT PersonnelID, Name, EmpStartCalc,
MAX(PositionDetailsValidFromCalc) PD ,
Max(PositionHierValidFromCalc) PH,
Max(PWAValidFromCalc) Position,
Max(RowId) As RowId
FROM TV_IAMintegration_VW
where
EmpStartCalc >= 20200101 and
EmpStartCalc <= 20200131 and
((20200131 > PositionDetailsValidFromCalc And
20200101 < PositionDetailsValidToCalc) or
PositionDetailsValidToCalc is null)
GROUP BY PersonnelID, Name, EmpStartCalc
如果“WHERE”子句未成功满足,我对该查询的要求是 return 在提到的列中为 null。
MAX(PositionDetailsValidFromCalc) PD , Max(PositionHierValidFromCalc) PH, Max(PWAValidFromCalc) Position
该行的其余部分应保持原样。
您需要条件聚合,而不是您的 WHERE
(您需要删除)。
所以每个 MAX
应该是这样的:
MAX (CASE WHEN
EmpStartCalc >= 20200101 and
EmpStartCalc <= 20200131 and
((20200131 > PositionDetailsValidFromCalc And
20200101 < PositionDetailsValidToCalc) or
PositionDetailsValidToCalc is null)
THEN whatever_value_you_want_here END)
这是我在 SS Management Studio 中的查询
SELECT PersonnelID, Name, EmpStartCalc,
MAX(PositionDetailsValidFromCalc) PD ,
Max(PositionHierValidFromCalc) PH,
Max(PWAValidFromCalc) Position,
Max(RowId) As RowId
FROM TV_IAMintegration_VW
where
EmpStartCalc >= 20200101 and
EmpStartCalc <= 20200131 and
((20200131 > PositionDetailsValidFromCalc And
20200101 < PositionDetailsValidToCalc) or
PositionDetailsValidToCalc is null)
GROUP BY PersonnelID, Name, EmpStartCalc
如果“WHERE”子句未成功满足,我对该查询的要求是 return 在提到的列中为 null。
MAX(PositionDetailsValidFromCalc) PD , Max(PositionHierValidFromCalc) PH, Max(PWAValidFromCalc) Position
该行的其余部分应保持原样。
您需要条件聚合,而不是您的 WHERE
(您需要删除)。
所以每个 MAX
应该是这样的:
MAX (CASE WHEN
EmpStartCalc >= 20200101 and
EmpStartCalc <= 20200131 and
((20200131 > PositionDetailsValidFromCalc And
20200101 < PositionDetailsValidToCalc) or
PositionDetailsValidToCalc is null)
THEN whatever_value_you_want_here END)