枚举查询中的组

时间:2011-09-28 07:29:33

标签: tsql sql-server-2008-r2

我正在尝试枚举某个视图中的组。

示例,从这个视图:

ID      FK1     FK2 FK3 FK4
104091  10160   1   1   29152
106797  10161   2   1   NULL
34682   10162   1   6   28556
61582   10162   1   6   28557
53045   10163   1   1   29154
23918   10164   1   6   28731
34683   10164   1   6   28729
89003   10164   1   4   28728
50547   10164   1   4   28727
50548   10165   1   6   29846
34684   10165   1   5   29847
23919   10165   1   5   29844

我希望有类似的东西:

ID      FK1     FK2 FK3 FK4     C
104091  10160   1   1   29152   1
106797  10161   2   1   NULL    2
34682   10162   1   6   28556   3
61582   10162   1   6   28557   3
53045   10162   1   1   29154   4
23918   10164   1   6   28731   5
34683   10164   1   6   28729   5
89003   10164   1   4   28728   6
50547   10164   1   4   28727   6
50548   10165   1   6   29846   7
34684   10165   1   5   29847   8
23919   10165   1   5   29844   8

如您所见,它看起来像

ROW_NUMBER() OVER (PARTITION BY FK1, FK2, FK3 ORDER BY FK1, FK2, FK3) AS C

唯一的区别是PARTITION BY重置每个组的row_number。相反,我希望每个组都有一个唯一的编号。更像是GROUP_NUMBER()

我希望这个问题足够明确:)

1 个答案:

答案 0 :(得分:3)

DENSE_RANK() OVER (ORDER BY FK1, FK2, FK3) AS C

应该做你需要的。