Pl / Sql编写复杂程序的最佳实践方法

时间:2015-11-05 12:03:07

标签: oracle stored-procedures plsql

我对Pl Sql相对比较新,必须编写一个跟踪的程序,它有6-7个不同的查询,如下所示:

从abc ..........

选择经理,计数(*)银行

从abc选择经理,计数(*)零售.......

现在每个计数都针对不同的部门,而经理可能是相同的。所以问题是我正在寻找一种可以帮助我存储的最佳方法 单独表格中的数据具有以下结构:

经理:计数银行:零售计数:计算xyz ...........

如何确保使用每个管理器对所有列(bank / retai / xyz)具有正确计数的Pl sql,首先是如何存储多个不同的查询结果并对其进行处理。我想我们可以使用光标,但我需要研究它,这个程序也应该是高性能的。 请建议。

由于 XslGuy

1 个答案:

答案 0 :(得分: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