0
我就用下面的代碼的報告工作:列對調,因爲ORDER BY的聲明
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
有在此查詢的數據模型共列,我要補充「ORDER BY」因爲在Oracle 11g組下不再有效。
當我在最後加上「ORDER BY 1」並運行報表時,它將T的總數與TOTAL列的總數顛倒。有沒有方法可以添加ORDER BY而不倒轉這些列?
謝謝!
「 - 錯? – StevieG
經過實證測試,我可以確認GROUP BY的確在11g中工作。因此,它必須使用它在11g中不起作用。 – Ollie
@Ollie - 我懷疑問題是GROUP BY在11g中使用了更高效的散列算法(自10g以來已經完成),這意味着結果不再按聚合列排序。而在早期版本的Oracle GROUP BY中,返回結果排序。該文檔將此列爲不能依賴的設計副作用:只有ORDER BY保證排序順序。然而,在實踐中,GROUP BY做到了這麼多人依賴它的技巧,並且不用擔心額外的問題。因此,「Oracle 11g集團下不再有效」的衝擊。 – APC