3

だから私はそのようなテーブルに取り組んでいます:

Sku ProductCode Product Id
01     11011         null
02     11021         null
03     11021         null
04     11011         null
05     11031         null
06     11041         null

そして、私は次のように製品IDを更新したいと思います:

Sku ProductCode Product Id
01     11011         01
02     11021         02
03     11021         02
04     11011         01
05     11031         03
06     11041         04

私はこのクエリを使用しています:

with upd  
as  
(  
SELECT *, ROW_NUMBER() OVER (PARTITION BY [Product Code] ORDER BY [Product Code]) AS rnk  
FROM temp  
)  
UPDATE upd  
SET ProductId = rnk

基本的には違う場合だけカウントしたいです。関数やプロシージャを使用せずにアイデアはありますか?連続するステートメントは問題なく、列も多くなります。

4

1 に答える 1

5

row_number()ではなくdense_rank()関数を使用する場合:

with upd  as  
     (SELECT *,
             dense_rank() OVER (ORDER BY [Product Code]) AS rnk  
      FROM temp  
     )  
UPDATE upd  
    SET ProductId = rnk
于 2012-09-13T20:25:30.807 に答える