日期:2014-05-16  浏览次数:20548 次

SQLSERVER2008筛选出当某列为指定数据时,其他若干列相等的数据

Create table T
(
id INT primary key identity(1,1),
A0 varchar(10),
A1 varchar(10),
A2 varchar(10),
b0 varchar(10),
b1 varchar(10),
b2 varchar(10),
C0 bit default 0,
C1 bit DEFAULT 0,
C2 bit default 0
)

insert into T 
select  '00','01','02','00','00','00',1,0,0 union
select  '01','01','01','00','00','00',1,0,0 union
select  '00','01','02','00','01','02',1,1,1 union
select  '00','01','02','00','00','00',1,1,0 union
select  '00','01','02','00','00','00',1,0,1 union
select  '01','01','01','01','00','01',1,0,1 union
select  '00','01','02','00','00','00',0,1,1 union
select  '00','01','02','00','01','02',0,1,1


筛选规则:若该列C0=1 C1=0 C2=0,同时A0=B0,那么打印出。
即只要C0 C1 C2其中任意值为1,同时对应的A=B,那么打印出。
最终结果应该为:
'00','01','02','00','00','00',1,0,0  --C0=1  A0=B0
'00','01','02','00','01','02',1,1,1  --   c1,c2=1 a1=b1 a2=b2
'01','01','01','01','00','01',1,0,1  -- c1,c3=1 a1=b1 a3=b3
 '00','01','02','00','01','02',0,1,1 -- c2,c3=1 a2=b2,a3=b3

------解决方案--------------------
select * from t
where not ((c0=1 and a0<>b0) or (c1=1 and a1<>b1) or (c2=1 and a2<>b2))