首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 行号有关问题

2012-09-15 
sql 行号问题表A记录如下1 张三2 张三3 李四4 王五5 张三上表为:个人登记记录(自动编号,姓名)如果姓名连续

sql 行号问题
表A记录如下
1 张三
2 张三
3 李四
4 王五
5 张三
上表为:个人登记记录(自动编号,姓名)
如果姓名连续出现两次则算一次

期望查询结果为

编号,姓名
1,张三
2,李四
3,王五
4,张三

用excel 我可以比较两行之间的关系,sql没有,不知怎么处理




[解决办法]
不太确定你想要哪一种,就写了两个 


SQL code
--> 测试数据:[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GO CREATE TABLE [tb]([id] INT,[name] VARCHAR(4))INSERT [tb]SELECT 1,'张三' UNION ALLSELECT 2,'张三' UNION ALLSELECT 3,'李四' UNION ALLSELECT 4,'王五' UNION ALLSELECT 5,'张三' UNION ALLSELECT 8,'张三' UNION ALLSELECT 9,'张三' UNION ALL SELECT 11,'张三' UNION ALL SELECT 12,'王五'--------------开始查询----------------------------1;WITH cte AS(SELECT *,row_id=ROW_NUMBER() OVER(ORDER BY id) FROM [tb])SELECT id=ROW_NUMBER() OVER(ORDER BY id),name FROM cte  AS a WHERE NOT EXISTS(SELECT 1 FROM cte WHERE [name]=a.[name] AND [row_id]=a.[row_id]-1 )--2SELECT id=ROW_NUMBER() OVER(ORDER BY id),name FROM [tb]  AS a WHERE NOT EXISTS(SELECT 1 FROM [tb] WHERE [name]=a.[name] AND [id]=a.[id]-1 )
[解决办法]
SQL code
DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > ) 

热点排行