如何将分组扩展到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;