Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 列因ORDER BY语句而反转_Oracle - Fatal编程技术网

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,我知道,我只是在表明一个观点。