1

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 ケトルを使用して、データベースからデータをクエリしています。どうすればこれを達成できますか?

ありがとうございました。

4

1 に答える 1

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
于 2013-09-12T15:15:54.907 に答える