将相连的两条记录的同一个字段比较

kaixinmaliu9420 2007-08-23 04:24:44
如何书写SQL语句来判断同一个字段(比方sexflag)两条记录的值是否相同?
也就是说比较记录1与2,2与3,3与4 ,4与5的sexflag字段值是否相等:
ID Name sexflag
1 Bill 0
2 Bill 0
3 Bill 1
4 kate 0
5 kate 1

...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaixinmaliu9420 2007-08-24
  • 打赏
  • 举报
回复
我要是有千万条记录该怎么办?
dawugui 2007-08-23
  • 打赏
  • 举报
回复
create table tb (ID int, Name varchar(10), sexflag int)
insert into tb values(1, 'Bill', 0 )
insert into tb values(2, 'Bill', 0)
insert into tb values(3, 'Bill', 1)
insert into tb values(4, 'kate', 0)
insert into tb values(5, 'kate', 1)
go

SELECT *,case when (SELECT TOP 1 sexflag FROM TB WHERE id>A.id order by id ) - sexflag = 0 then '相同' else '不相同' end 比较结果
FROM TB A

drop table tb

/*
ID Name sexflag 比较结果
----------- ---------- ----------- ------
1 Bill 0 相同
2 Bill 0 不相同
3 Bill 1 不相同
4 kate 0 不相同
5 kate 1 不相同

(所影响的行数为 5 行)
*/
Ray_Zhang 2007-08-23
  • 打赏
  • 举报
回复
select
case when (select Count(*) from t a,t b where b.id=a.id+1 and a.sexflag=b.sexflag )>1 then 'Same' else 'No' end fl, cast(id as varchar)+'-'+cast(id-1 as varchar) as bet
from t

不知道对不对,反正是这样想的
playwarcraft 2007-08-23
  • 打赏
  • 举报
回复
--子查詢

select a.ID
, a.Name
, a.sexflag
, (select sexflag from T where id=a.id+1)
from T a
playwarcraft 2007-08-23
  • 打赏
  • 举报
回复
相不相同可以直接比了
select a.ID , a.Name , a.sexflag, b.sexflag
from T a
inner join T b
on a.id+1=b.id

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧