1

あるシステムから別のシステムにデータをエクスポートするときに発生した問題に頭を悩ませようとしています。

次のようなテーブルがあるとします。

id  |  item_num  
1      1            
2      1            
3      2            
4      3            
5      3           
6      3            

テーブルに列を追加し、項目に基づいて増加する product_num フィールドを含むように更新する必要があります。これは、上記の表から得られる最終結果です。

id  |  item_num  |  product_num
1      1            1
2      1            2
3      2            1
4      3            1
5      3            2
6      3            3 

これについてのアイデアはありますか?

編集:これは、あるシステムから別のシステムへのAccess 2010で行われています(SQLサーバーソース、カスタム/不明なODBC駆動の宛先)

4

1 に答える 1

1

おそらく、SQL Server データベースでビューを作成し、Access でそのビューから選択して宛先に挿入することができます。

SQL Server で考えられる解決策:

-- Use row_number() to get product_num in SQL Server 2005+:
select id
    , item_num
    , row_number() over (partition by item_num order by id) as product_num
from MyTable;

-- Use a correlated subquery to get product_num in many databases:
select t.id
    , t.item_num
    , (select count(*) from MyTable where item_num = t.item_num and id <= t.id) as product_num
from MyTable t;

同じ結果:

id          item_num    product_num
----------- ----------- --------------------
1           1           1
2           1           2
3           2           1
4           3           1
5           3           2
6           3           3
于 2013-02-05T22:35:34.127 に答える