根据列添加自动递增数

时间:2013-02-05 22:18:54

标签: sql sql-server odbc ms-access-2010

我试图解决一个问题,即我将数据从一个系统导出到另一个系统。

假设我有一张表:

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

我需要在表中添加一列并将其更新为包含基于item的递增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 server source,custom / unknown ODBC driven destination)

1 个答案:

答案 0 :(得分:1)

也许您可以在SQL Server数据库中create a view,然后从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