sql 话语难题
sql 语句难题
ID NAME INDEX
1 A
2 A
3 B
4 B
5 A
变成
ID NAME INDEX
1 A 0
2 A 1
3 B 0
4 B 1
5 A 2
------解决方案--------------------
--创建表
CREATE TABLE test (id INT IDENTITY(1,1) , NAME varchar(1))
INSERT INTO test
SELECT 'A' UNION ALL
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'B' UNION ALL
SELECT 'A'
--查询
SELECT id ID,NAME 名称,ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY id)-1 已出现次数 from test
order by id
--结果
ID 名称 已出现次数
----------- ---- --------------------
1 A 0
2 A 1
3 B 0
4 B 1
5 A 2
ID NAME INDEX
1 A
2 A
3 B
4 B
5 A
变成
ID NAME INDEX
1 A 0
2 A 1
3 B 0
4 B 1
5 A 2
------解决方案--------------------
--创建表
CREATE TABLE test (id INT IDENTITY(1,1) , NAME varchar(1))
INSERT INTO test
SELECT 'A' UNION ALL
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'B' UNION ALL
SELECT 'A'
--查询
SELECT id ID,NAME 名称,ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY id)-1 已出现次数 from test
order by id
--结果
ID 名称 已出现次数
----------- ---- --------------------
1 A 0
2 A 1
3 B 0
4 B 1
5 A 2