按参数分组SQL Developer Oracle

时间:2016-12-07 12:07:59

标签: oracle oracle-sqldeveloper

是否可以按参数分组。我有这样的查询:

select :P1,  sum(prod), sum(kol), sum(ps)
from promet_3b
group by :P1      ----P1 is parameter

我想按此参数分组。 1,2或更多列。如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

你使用的查询在语法上是正常的,但不是你想要的那样。

假设您传递了' COLX'的值,查询将按如下方式执行

select 'COLX' as P1,  sum(prod), sum(kol), sum(ps)
from promet_3b
group by 'COLX'

这将返回一行并完全忽略COLX。

这是一个简单的例子,实现了一个逻辑:

如果您在A栏上传递1组 如果您在B栏上通过2组

请确保列的类型相同

with dt as (
select 'x1' A, 'y' B, 1 cnt from dual union all
select 'x2' A, 'y' B, 1 cnt from dual)
select 
decode(:i,1,A,2,B) grp_col, sum(cnt) from dt
group by decode(:i,1,A,2,B);

传递1返回

GRP_COL   SUM(CNT)
------- ----------
x1               1 
x2               1 

传递2回复

GRP_COL   SUM(CNT)
------- ----------
y                2 

答案 1 :(得分:0)

试试这个

With sub1 as( select :p1 as P1, prod, kol, ps from promet_3b ) Select p1,sum(prod),sum(kol),sum(ps) FROM sub1 group by p1