SQL Server使用CTE添加订单

时间:2017-05-02 14:41:26

标签: sql sql-server join common-table-expression

我想在while循环中实现一些简单的操作,但是运行速度太慢所以我确信我可以使用CTE表来执行此操作,但我不知道如何...

我有两个表加入一对多,我正在尝试在此处详细订购我的数据:

enter image description here

对于每个IDRV,您有许多IDRVOBJET。我想为IDRV中的每个IDRVOBJET设置一个订单号1到n。我不知道我是否清楚,但这就是我应该得到的结果:

enter image description here

感谢您抽出宝贵时间帮助我!

修改

这是格式化文本:

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

3 个答案:

答案 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>