2015-11-05 41 views
0

我是比較新的PL SQL和有寫這不下面的程序,它得到了其中6-7不同的查詢如下:PL/SQL方法編寫複雜程序的最佳實踐

選擇經理,算上從美國廣播公司(*)的銀行..........從ABC

選擇Manager,COUNT(*)零售.......

現在每個數是不同的部門,而經理可能是一樣的。所以問題是,我正在尋找一個最佳的方法,這有助於我將 的數據存儲在具有以下結構的單獨表格中:

經理:計數銀行:計數零售:計數xyz .........

如何確保使用Pl sql,每個管理員都有權對所有列(bank/retai/xyz)進行計數,首先是如何存儲多個不同的查詢結果並對其進行處理。我認爲我們可以使用光標,但我需要研究它,這個過程也應該是高性能的。 請建議。

感謝 XslGuy

+2

在我看來像一個學校的功課。 – nop77svk

回答

4

這是有條件的資金很容易實現。希望下面的內容能給你足夠的關於你需要做什麼的想法:

with sample_data as (select 1 id, 1 dept, 10 val from dual union all 
        select 2 id, 1 dept, 20 val from dual union all 
        select 3 id, 2 dept, 30 val from dual union all 
        select 4 id, 3 dept, 40 val from dual union all 
        select 5 id, 1 dept, 50 val from dual union all 
        select 6 id, 3 dept, 60 val from dual union all 
        select 7 id, 2 dept, 70 val from dual union all 
        select 8 id, 4 dept, 80 val from dual) 
-- end of creating a subquery that contains some sample data. See sql below: 
select sum(case when dept = 1 then val end) dept_1_total, 
     sum(case when dept = 2 then val end) dept_2_total, 
     sum(case when dept = 3 then val end) dept_3_total 
from sample_data 
where dept in (1, 2, 3); 

DEPT_1_TOTAL DEPT_2_TOTAL DEPT_3_TOTAL 
------------ ------------ ------------ 
      80   100   100 
+0

...或通過常規的「按部門分組」組織循環遊標。 – nop77svk

+2

@ nop77svk雖然通過查詢的標準組將給出總計,但它會將它們作爲行,而不是列。由於OP想要將不同的部門計數作爲單獨的列存儲在表中,因此按查詢分組需要額外的工作來將結果轉換爲正確的格式。當你可以直接做條件和直接得到格式結果時,爲什麼還要打擾呢? – Boneist

+0

如果你用'id'分組,它會更適合OP。 –