如果在 SSMS 中不满足条件,where 子句不返回任何内容
Posted
技术标签:
【中文标题】如果在 SSMS 中不满足条件,where 子句不返回任何内容【英文标题】:Where clause returns nothing if condition is not met in SSMS 【发布时间】:2021-04-22 16:45:16 【问题描述】:这是我在 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”子句没有成功满足,我对这个查询的要求是在提到的列中返回 null。
MAX(PositionDetailsValidFromCalc) PD , Max(PositionHierValidFromCalc) PH, Max(PWAValidFromCalc) Position
该行的其余部分应保持原样。
【问题讨论】:
附带问题,您是否将日期存储为整数?为什么不是日期数据类型? 在 PowerApps 中使用它们作为整数进行计算,在 PowerApps 中我们对日期比较和计算有一些限制。 【参考方案1】:您需要条件聚合,而不是您的 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)
【讨论】:
以上是关于如果在 SSMS 中不满足条件,where 子句不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章