我有以下问题.我必须将表的项目数计为新列.不改变额外列的分离.
由于它非常复杂,我将尝试提供一个很好的例子来解释我的意思:
输入表:
BS item_id price
-------------------------------
BS1 3 10
BS1 5 12
BS3 6 15
BS3 7 18
BS4 8 5
BS1 9 10
Run Code Online (Sandbox Code Playgroud)
计数应添加列金额.金额基于BS.
BS item_id price Amount
-------------------------------
BS1 3 10 3
BS1 5 12 3
BS3 6 15 2
BS3 7 18 2
BS4 5 12 1
BS1 8 10 3
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以使用子查询计数,以获得我上面显示的数量.
当我在代码中使用如下所示的计数时,我得到每个BS项目的值1
SELECT COUNT(bsc_bsc_id)AS Amount,
katg_katg_id,
ex_wert
from (
SELECT bs_bs_id,
katg_katg_id,
jahr,
TO_CHAR (TO_DATE (a.jahr || a.monat, 'YYYYMM'), 'YYYYMM') AS monat_key,
bsc_bsc_id,
buchg_date,
ex_wert,
vp_wert
FROM fis_buchg_schl a
Run Code Online (Sandbox Code Playgroud)
上面的代码或多或少都是伪代码,因为我花了很多时间,因为它太长了.正确方向提示解决我的问题会很棒.
小智 6
假设您使用的是SQLServer 2005或更高版本,请尝试:
Select BS, item_id, price,
count(*) over (partition by BS) Amount
from yourTable
Run Code Online (Sandbox Code Playgroud)
编辑:也应该为Oracle工作.
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |