Row_Number()按值的最后一个字符进行分区

时间:2017-09-05 13:49:32

标签: sql-server sql-server-2008 stored-procedures

我想使用行号将数据集分区为两列。但只能按给定列中值的最后一个字符对其进行分区。

假设我使用以下查询:

SELECT ColumnA,
       ColumnB,
      ROW_NUMBER() OVER (PARTITION BY ColumnA, ColumnB ORDER BY ColumnA, ColumnB) RN
FROM Table1

ColumnB包含以下范围内的值:1000,2000,3000,4000。我希望它仅使用值的最后一个字符对B列进行分区(在上面的示例中' 0')

这可能吗?我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:2)

假设ColumnB是varchar,您可以使用RIGHT()

SELECT ColumnA,
       ColumnB,
      ROW_NUMBER() OVER (PARTITION BY RIGHT(ColumnB, 1) ORDER BY ColumnA, ColumnB) RN
FROM Table1

否则,您可以使用% 10获取最后一位数字。