是否可以按参数分组。我有这样的查询:
select :P1, sum(prod), sum(kol), sum(ps)
from promet_3b
group by :P1 ----P1 is parameter
我想按此参数分组。 1,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