2016-04-04 13 views
0

私はproduct_id列、store_id、x列を持つtable_aを持っています。Postgresシーケンシング複合キー

私は

create table_b as 
select store_id, product_id, sequence_number 
from table_a 

SEQUENCE_NUMBERは次のように見えるようになっている、自動生成された番号であるにしたい:

store_id   | product_id    | sequence_number 
1     | 1      | 1 
1     | 1      | 2 
1     | 1      | 3 
1     | 2      | 1 
1     | 2      | 2 
2     | 1      | 1 
2     | 1      | 2 

は、SQLクエリでこれを行うには、それは可能ですか?

+0

あなたは 'ROW_NUMBER()'を探しています:http://www.postgresql.org/docs/current/static/tutorial-window.html –

答えて

0

あなたはrow_number()でこれを行うことができます。

create table_b as 
    select store_id, product_id, 
      row_number() over (partition by store_id, product_id 
           order by NULL 
          ) as sequence_number 
    from table_a; 
+0

おかげで!しかし、NULLによる注文の意味は何ですか? –

+0

@ YukaFujisaku。 。 。これは 'order by'節を省くことと同じです。しかし、大部分のデータベースではそれが必要なので、残しておくのはちょっと混乱していると思います。 –

+0

説明をありがとう –