TSql返回基于分区和rownumber的列

时间:2017-09-12 14:45:11

标签: sql-server tsql rank row-number partition-by

我有一个SQL服务器表,我试图获取一个计算列 -  MyPartition - 根据变量@segment指示分区的编号。例如,如果@segment = 3,则以下输出为真。

RowID  | RowName    | MyPartition
------ | -----------| -------
1      | My Prod 1  | 1
2      | My Prod 2  | 1
3      | My Prod 3  | 1
4      | My Prod 4  | 2
5      | My Prod 5  | 2
6      | My Prod 6  | 2
7      | My Prod 7  | 3
8      | My Prod 8  | 3
9      | My Prod 9  | 3
10     | My Prod 10 | 4

到目前为止我所拥有的是:

SELECT 
    RowId,
    RowName,
    ROW_NUMBER() OVER(PARTITION BY RowId ORDER BY RowId ASC) AS MyPartition
FROM MyTable
ORDER BY RowId

但是你可以猜测分区只是在rowid上分区,给出mypartition的所有值= 1.我不确定如何构造partition by子句来实现这一点。

1 个答案:

答案 0 :(得分:5)

怎么样

CEILING(ROW_NUMBER() OVER(ORDER BY RowId ASC) / 3.0)