【发布时间】:2018-08-01 10:42:57
【问题描述】:
我有一个简单的查询,似乎给出了预期的结果:
select op.opr, op.last, op.dept, count(*) as counter
from DWRVWR.BCA_M_OPRIDS1 op
where op.opr = '21B'
group by op.opr, op.last ,op.dept;
我的原始查询没有返回任何结果。唯一的区别是 group by 子句的顺序:
select op.opr, op.last, op.dept, count(*) as counter
from DWRVWR.BCA_M_OPRIDS1 op
where op.opr = '21B'
group by op.opr, op.dept, op.last;
实际上,这是一个更大、更复杂的查询的一部分,但我将问题缩小到了这个范围。我能够找到的所有文档都表明 group by 子句的顺序无关紧要。我真的很想了解为什么我会得到不同的结果,因为如果存在潜在问题,我必须检查所有使用 group by 子句的查询。如果重要的话,我正在使用 SQL Developer。
另外,如果 group by 子句的顺序无关紧要,并且聚合函数中未使用的每个字段都需要在 group by 子句中列出,那么 group by 子句是否只是多余且看似不必要的?
【问题讨论】:
-
我昨天确实遇到了这个问题,但是在 SQL Server 中。我的问题是我尝试订购的日期和分组依据不是我正在搜索的信息。也许它与物理数据本身有关,而不是 ORDER 或 GROUP BY 子句。
-
听起来像一个错误。又似曾相识,但不知从何而来。你在哪个补丁级别?它是一个简单的表格还是一个视图?这两个查询的执行计划也可能很有趣。