SELECT HOME_DEPT, LINECODE, SUM(TOTAL_HRS),
TO_CHAR (
100*RATIO_TO_REPORT(SUM(TOTAL_HRS))
OVER (PARTITION BY HOME_DEPT),
'990.00L', 'NLS_CURRENCY=%'
) PCT_JOB
FROM TABLE
GROUP BY HOME_DEPT, LINECODE ORDER BY HOME_DEPT ASC, PCT_JOB DESC;
以上Oracle查詢工作,併產生結果,例如:甲骨文RATIO_TO_REPORT和彙總
DEPT1 LINECODE1 100 50%
DEPT1 LINECODE2 50 25%
DEPT1 LINECODE3 50 25%
DEPT2 LINECODE1 20 12.5%
DEPT2 LINECODE2 20 12.5%
DEPT2 LINECODE3 20 12.5%
DEPT2 LINECODE4 20 12.5%
DEPT2 LINECODE5 20 12.5%
DEPT2 LINECODE6 20 12.5%
DEPT2 LINECODE7 20 12.5%
DEPT2 LINECODE8 20 12.5%
現在我想每個部門彙總得到的結果是這樣的:
DEPT1 LINECODE1 100 50%
DEPT1 LINECODE2 50 25%
DEPT1 LINECODE3 50 25%
DEPT1 200 100% <--- desired
DEPT2 LINECODE1 20 12.5%
DEPT2 LINECODE2 20 12.5%
DEPT2 LINECODE3 20 12.5%
DEPT2 LINECODE4 20 12.5%
DEPT2 LINECODE5 20 12.5%
DEPT2 LINECODE6 20 12.5%
DEPT2 LINECODE7 20 12.5%
DEPT2 LINECODE8 20 12.5%
DEPT2 160 100.0% <--- desired
我有嘗試了各種各樣的東西,例如GROUPING SETS,但是我的PCT_JOB值是錯誤的。
我認爲你需要,做了彙總外部查詢到這個包起來。 – FrustratedWithFormsDesigner 2012-04-17 17:47:50
你是對的。我得到它的工作,但現在我想要下降的百分比,但在所有下降百分比後列出每個部門的彙總。但由於彙總是100%,因此首先列出。 – jeff 2012-04-17 18:15:08
我認爲你可以做類似'... ORDER BY CASE當PCT = 100 THEN 1 ELSE 0 AS PCT END'不知道如果語法是100%,但我敢肯定它*可能有一個表達式在訂單條款中。 – FrustratedWithFormsDesigner 2012-04-17 18:18:11