假设我有一个名为customer_order的表:
id| cust#| counter
1 1 1
2 2 1
3 1 2
4 3 1
5 2 2
6 1 3
所以我的想法是,每次客户(cust#)重复时,你都希望增加计数器,如上所示。我需要在查询数据时在SELECT语句中执行此操作。我正在使用Pentaho水壶来查询数据库中的数据。我怎样才能做到这一点?
谢谢。
答案 0 :(得分:1)
您可以使用纯sql执行此操作:
update customer c
set counter = (select count(*) from customer c2 where c2.cust# = c.cust# and c2.id <= c.id);
如果你有一个customer(cust#, id)
索引,那么上面应该非常有效。
您也可以使用变量执行此操作,如果您有超过几万行,这可能更实用。
编辑:
深埋,我看到I want to do this in a select
。哎呀。这是select
版本:
select c.*,
(select count(*) from customer c2 where c2.cust# = c.cust# and c2.id <= c.id) as counter
from customer c