【发布时间】:2021-09-08 08:34:23
【问题描述】:
这实际上是一个非常简单的查询,但我不知道为什么它显示的值实际上被 HAVING 排除在外。
表 1 -> 维护表
- ExpenditureComplete -> 浮动
- 身份证
表 2 -> 子表(Maintable 多于 1 个条目)
- 持续时间小时
- MainTable_ID(链接到 Table1 的 ID)
- 身份证
SELECT
a.ID,
b.MainTable_ID,
MAX(a.ExpenditureComplete) as ExpenditureHours,
SUM(b.DurationHour) as DurationHours
FROM [Table_1] as a
Inner join
[Table_2] as b
On
a.ID = b.MainTable_ID
Where a.Inactive = 0
and b.Inactive = 0
Group by
a.ID,
b.MainTable_ID
Having MAX(a.ExpenditureComplete) <> SUM(b.DurationHour)
【问题讨论】:
-
你的数据库是什么?
-
运行此查询后的结果是什么?根据你的截图。它必须是 0 行。
-
请不要发布带有样本数据的图片。将其以文本形式发布,或者更好的是,以脚本形式发布
-
小心浮动。浮点算术是一门黑暗的艺术,主要是魔法,因此它会导致奇怪的结果。尝试将数据转换为定点值,然后再对它进行任何其他操作(DECIMAL、NUMERIC,无论您在 DBMS 中拥有什么)。
-
尝试使用round(max(),2)round(sum(),2)
标签: sql sum max having having-clause