如何在不更改表格结构的情况下计算新列中项目的频率?SQL

xta*_*rsy 0 sql oracle count

我有以下问题.我必须将表的项目数计为新列.不改变额外列的分离.

由于它非常复杂,我将尝试提供一个很好的例子来解释我的意思:

输入表:

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工作.