我想在while循环中实现一些简单的操作,但是运行速度太慢所以我确信我可以使用CTE表来执行此操作,但我不知道如何...
我有两个表加入一对多,我正在尝试在此处详细订购我的数据:
对于每个IDRV,您有许多IDRVOBJET。我想为IDRV中的每个IDRVOBJET设置一个订单号1到n。我不知道我是否清楚,但这就是我应该得到的结果:
感谢您抽出宝贵时间帮助我!
修改
这是格式化文本:
IDRV IDRVOBJET ORDER
12700 76357 1
12700 76358 2
12701 76363 1
12701 76364 2
12701 76365 3
12702 76359 1
12702 76360 2
12703 76120 1
12703 76121 2
12703 76122 3
12705 19375 1
12705 19376 2
12706 19410 1
12707 19408 1
12707 19409 2
12709 22473 1
12709 22474 2
12711 40352 1
12711 40353 1
答案 0 :(得分:3)
只需使用窗口功能。
SELECT
IDRV,
IDRVOBJECT,
ROW_NUMBER() OVER (PARTITION BY IDRV ORDER BY IDRVOBJECT) as ORDRE
FROM YourTable
答案 1 :(得分:1)
您可以使用row_number和分区
select *, Ordr = Row_Number() over (partition by IDRV order by IDRVOBJET) from your table
答案 2 :(得分:1)
SELECT IDRV,IDRVOBJECT,Row_Number()Over(Partition by IDRV Order by IDRVOBJECT) AS ORDRE
FROM <yourtable>