1

我有一张包含以下数据的表格,

          Product
-----------------------------
ID   Name ProductTypeID Order
1     A        1          0
2     B        1          0
3     D        2          0
4     C        2          0
-----------------------------------
-----------------------------------
-----------------------------------

我需要更新订单,使其价值变为,

          Product
-----------------------------
ID   Name ProductTypeID Order
1     A        1          1
2     B        1          2
3     D        2          1
4     C        2          2
-----------------------------------
-----------------------------------
-----------------------------------

看到它正在为每个 ProductTypeID 增加 Order 作为 AutoIncrement。

4

2 回答 2

4

您要做的是对分区内的记录进行排序。执行您想要的操作的查询是这样的:

WITH sorted AS (
    SELECT id, ROW_NUMBER() OVER(PARTITION BY ProductTypeId ORDER BY id ASC) as rownum
    FROM product
)
UPDATE product
SET [order] = s.rownum
FROM product p
   INNER JOIN sorted s on (p.id = s.id);
于 2013-04-27T05:38:49.493 回答
2

现在试试

 Update product  Set  [order]= Case  when Not Exists (Select * from
 product a where  a.ProductTypeID =product.ProductTypeID  and a.id
 <product.ID )
     tHEN 1
     eLSE 
     ((Select Count([ORDER]) from product  b where 
     b.ProductTypeID =product.ProductTypeID  and b.ID <product.id)+1)
    eND
于 2013-04-27T05:11:57.163 回答