按参数分组 SQL 开发人员 Oracle

Group by Parameters SQL Developer Oracle

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

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

我想按这个参数分组。 1,2 或更多列。如何做到这一点?

您使用的查询在语法上没有问题,但可能不是您想要的。

假设你传值'COLX',查询会执行如下

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

这将 return 一行并完全忽略 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 returns

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

传球 2 returns

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

试试这个

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