如何将分组扩展到SQL Server中的行数

如何将分组扩展到SQL Server中的行数,sql,sql-server,Sql,Sql Server,我有以下资料: DECLARE @TABLE1 TABLE ( VAL1 VARCHAR(2), VAL2 VARCHAR(2) ) INSERT INTO @TABLE1 VALUES ('A', 'X'), ('A', 'Y'), ('A', 'Z'), ('B', 'X'), ('B', 'Y'), ('C', 'X'), ('D', 'X') 我想得到以下结果: 1 A X 1 A Y 1 A Z 2 B

我有以下资料:

DECLARE @TABLE1 TABLE
(
    VAL1 VARCHAR(2),
    VAL2 VARCHAR(2)
)

INSERT INTO @TABLE1 
VALUES ('A', 'X'), ('A', 'Y'), ('A', 'Z'),
       ('B', 'X'), ('B', 'Y'),
       ('C', 'X'), ('D', 'X')
我想得到以下结果:

1   A   X
1   A   Y
1   A   Z
2   B   X
2   B   Y
3   C   X
4   D   X
我所做的是:

WITH T1 AS
(
    SELECT 
        ROW_NUMBER() OVER(ORDER BY VAL1) RW,
        VAL1
    FROM 
        @TABLE1
    GROUP BY
        VAL1
)
SELECT 
    T1.RW, T2.VAL1, T2.VAL2 
FROM 
    T1
INNER JOIN 
    @TABLE1 T2 ON T1.VAL1 = T2.VAL1
这是可行的,但我想知道是否还有其他更简单的方法


谢谢你的帮助

您可以使用
densite\u rank()

在你看来,是什么让一种方式比另一种方式“更容易”?
select dense_rank() over (order by val1) as rw, val1, val2
from @table1 t1;