为SQL查询添加特殊条件:排除指定日期的负ItemAmount记录
修改后的SQL查询语句
你只需要在原WHERE条件中添加额外的过滤规则,排除DateX = '2023-06-07' 且 ItemAmount < 0的记录即可,以下提供两种等价的实现方式:
方案一:用NOT明确排除目标记录
SELECT SUM(T.totalcost) / SUM(T.ItemAmount) AS AVG FROM Transaction_Body T WHERE T.ItemsID = 1 AND T.DateX <= '2023-06-07' AND NOT (T.DateX = '2023-06-07' AND T.ItemAmount < 0) GROUP BY T.ItemsID
方案二:拆解条件逻辑(可读性更强)
把条件拆分为两种合法情况:要么日期早于2023-06-07,要么日期等于2023-06-07但ItemAmount非负,同时满足ItemsID=1:
SELECT SUM(T.totalcost) / SUM(T.ItemAmount) AS AVG FROM Transaction_Body T WHERE T.ItemsID = 1 AND (T.DateX < '2023-06-07' OR (T.DateX = '2023-06-07' AND T.ItemAmount >= 0)) GROUP BY T.ItemsID
两种写法逻辑完全一致,可根据可读性偏好选择。
内容的提问来源于stack exchange,提问作者Ahmed Saif
相关产品推荐
相关产品推荐

