Shy*_*kin 3 sql sql-server-2008
所以我在这样一张桌子上工作:
Sku ProductCode Product Id
01 11011 null
02 11021 null
03 11021 null
04 11011 null
05 11031 null
06 11041 null
Run Code Online (Sandbox Code Playgroud)
我想像这样更新产品 ID:
Sku ProductCode Product Id
01 11011 01
02 11021 02
03 11021 02
04 11011 01
05 11031 03
06 11041 04
Run Code Online (Sandbox Code Playgroud)
我正在使用这个查询:
with upd
as
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY [Product Code] ORDER BY [Product Code]) AS rnk
FROM temp
)
UPDATE upd
SET ProductId = rnk
Run Code Online (Sandbox Code Playgroud)
基本上我只想在它不同时才计数。不使用任何函数或过程的任何想法?连续语句很好,更多列也是如此。
你想使用dense_rank() 函数而不是row_number():
with upd as
(SELECT *,
dense_rank() OVER (ORDER BY [Product Code]) AS rnk
FROM temp
)
UPDATE upd
SET ProductId = rnk
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |