求一条查询语句!
有表字段F1,F2,F3,F4,F5,F6,字段的值为单个字母A,B,C,
例如
ID F1 F2 F3 F4 F5 F6
1 A A B C B A
2 B A B C A C
3 C B B A B C
4 B B C A A B
…
查询要求F1,F3,F4,F6的值分别为A,B,BC,A,只要对1-3个值就查询出来(F4为B或者C都是满足要求)
查询结果(其中第一行四个都符合,没有查询出来,第四行一个都不对,没有查询出来
第二行对两个,第三行对1个,都符合要求)
ID F1 F2 F3 F4 F5 F6
2 B A B C A C
3 C B B A B C
…
如何实现上面的查询语句!
[解决办法]
select * from tb where (case when F1='A' then 1 else 0 end)+ (case when F3='B' then 1 else 0 end)+ (case when F4 in ('A','B') then 1 else 0 end)+ (case when F6='A' then 1 else 0 end) between 1 and 3
[解决办法]
use Tempdbgo--> --> if not object_id(N'Tempdb..#T') is null drop table #TGoCreate table #T([ID] int,[F1] nvarchar(1),[F2] nvarchar(1),[F3] nvarchar(1),[F4] nvarchar(1),[F5] nvarchar(1),[F6] nvarchar(1))Insert #Tselect 1,N'A',N'A',N'B',N'C',N'B',N'A' union allselect 2,N'B',N'A',N'B',N'C',N'A',N'C' union allselect 3,N'C',N'B',N'B',N'A',N'B',N'C' union allselect 4,N'B',N'B',N'C',N'A',N'A',N'B'GoSelect * from #T AS aWHERE (F1='A' OR F3='B' OR F4 IN('B','C') OR f6 IN('A'))AND NOT (F1='A' AND F3='B' and F4 IN('B','C') AND f6 IN('A'))/*ID F1 F2 F3 F4 F5 F62 B A B C A C3 C B B A B C*/