日期:2014-05-18  浏览次数:20448 次

将相连的两条记录的同一个字段比较
如何书写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
       


------解决方案--------------------
相不相同可以直接比了
select a.ID , a.Name , a.sexflag, b.sexflag
from T a
inner join T b
on a.id+1=b.id
------解决方案--------------------
--子查詢

select a.ID
, a.Name
, a.sexflag
, (select sexflag from T where id=a.id+1)
from T a
------解决方案--------------------
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 行)
*/