Oracle 列因ORDER BY语句而反转
我正在编写一份具有以下代码的报告:Oracle 列因ORDER BY语句而反转,oracle,Oracle,我正在编写一份具有以下代码的报告: SELECT SUBS_PROV "PROV", SUM(PAID_AMT), 0, 0, 0, SUM(PAID_AMT) FROM H WHERE GRP = :P_POLICY AND &P_DATE BETWEEN :P_FROM_DATE AND :P_TO_DATE GROUP BY SUBS_PROV UNION ALL SELECT PROV "PROV", 0, SUM(PAID_AMT), 0, 0, SUM(PAID_AM
SELECT SUBS_PROV "PROV", SUM(PAID_AMT), 0, 0, 0, SUM(PAID_AMT)
FROM H
WHERE GRP = :P_POLICY AND
&P_DATE BETWEEN :P_FROM_DATE AND :P_TO_DATE
GROUP BY SUBS_PROV
UNION ALL
SELECT PROV "PROV", 0, SUM(PAID_AMT), 0, 0, SUM(PAID_AMT)
FROM D
WHERE GRP = :P_POLICY AND
&P_DATE BETWEEN :P_FROM_DATE AND :P_TO_DATE
GROUP BY PROV
UNION ALL
SELECT PROV "PROV", 0, 0, SUM(PAID_AMT), 0, SUM(PAID_AMT)
FROM E
WHERE GRP = :P_POLICY AND
&P_DATE BETWEEN :P_FROM_DATE AND :P_TO_DATE
GROUP BY PROV
UNION ALL
SELECT SUBS_PROV "PROV", 0, 0, 0, SUM(PAID_AMT), SUM(PAID_AMT)
FROM R
WHERE GRP = :P_POLICY AND
&P_DATE BETWEEN :P_FROM_DATE AND :P_TO_DATE
GROUP BY SUBS_PROV
在数据模型的这个查询中有一个TOTAL列,我必须添加“orderby”,因为在oracle11g下,groupby不再起作用 当我在最后添加“ORDER BY 1”并运行报告时,它会将H的总数与TOTAL列的总数颠倒。有没有一种方法可以在不反转这些列的情况下添加ORDER BY
谢谢 您应该在每个
GROUP BY
之后添加ORDER BY
,而不是仅在末尾添加。“在Oracle 11g下GROUP BY不再起作用”-错误?我可以在经验测试后确认GROUP BY确实在11g中起作用。因此,您必须使用11g中不起作用的哈希算法。@Ollie-我怀疑问题在于GROUP BY在11g中使用了一种更有效的哈希算法(自10g以来就是这样),这意味着结果不再按聚合列排序。而在Oracle GROUP BY的早期版本中,会返回排序的结果。文件将此列为设计的副作用,这是不可依赖的:只能按顺序保证排序顺序。然而,在练习组BY中,很多人都依赖于这个技巧,而不去理会额外的种类。因此,当“Oracle11g下的group by不再工作”时,我感到震惊。APC,我知道,我只是在表明一个观点。