枚举并添加在 select 的列中 - Oracle
Enumerate and add in a column of the select - Oracle
我需要按类型在 select 的列中枚举我的行。例如,我有三种类型,可以是 "RR"、"RJ" 和 "RA",每次出现类型 "RR" 时,我必须对 3 和其他类型求和仅求和 1,创建如下序列:
输入数字
RR 3
RR 6
RJ 7
RR 10
RJ 11
RA 12
RR 15
我在 select 中还有其他字段,所以我将 ROW_NUMBER() 函数用于我所有的按字段排序,例如:
select
number,
[...]
type,
ROW_NUMBER() OVER (order by number, type [...] )*3 as sequence
from
my_table
order by number, type [...]
我也尝试过使用 case 语句,但它没有聚合值。
可以吗?我正在尝试使用 ROW_NUMBER()
函数,但我无法得到结果,只有三乘三。
您可以使用 SUM
:
select
number,
[...]
type,
SUM(CASE WHEN Type = 'RR' THEN 3 ELSE 1 END)
OVER (order by number, type [...] ) as sequence
from my_table
order by number, type [...]
我需要按类型在 select 的列中枚举我的行。例如,我有三种类型,可以是 "RR"、"RJ" 和 "RA",每次出现类型 "RR" 时,我必须对 3 和其他类型求和仅求和 1,创建如下序列:
输入数字
RR 3
RR 6
RJ 7
RR 10
RJ 11
RA 12
RR 15
我在 select 中还有其他字段,所以我将 ROW_NUMBER() 函数用于我所有的按字段排序,例如:
select
number,
[...]
type,
ROW_NUMBER() OVER (order by number, type [...] )*3 as sequence
from
my_table
order by number, type [...]
我也尝试过使用 case 语句,但它没有聚合值。
可以吗?我正在尝试使用 ROW_NUMBER()
函数,但我无法得到结果,只有三乘三。
您可以使用 SUM
:
select
number,
[...]
type,
SUM(CASE WHEN Type = 'RR' THEN 3 ELSE 1 END)
OVER (order by number, type [...] ) as sequence
from my_table
order by number, type [...]