按参数分组 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
是否可以按参数分组。我有这样的查询:
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