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

关于sql位运算的问题 (详情看内容)
我检索数据这样
姓名   年龄     所对栏目   栏目权限
王       28         系统管理   01111
王       28         系统管理   01001
王       28         人员管理   01111

我希望得到的结果是  
王       28         系统管理   01001
王       28         人员管理   01111

即如果所对栏目相同就对栏目权限字段做位运算

有办法实现吗???

------解决方案--------------------
declare @t table(姓名 varchar(10),年龄 int,所对栏目 varchar(10),栏目权限 varchar(10))
insert into @t select '王 ',28, '系统管理 ', '01111 '
insert into @t select '王 ',28, '系统管理 ', '01001 '
insert into @t select '王 ',28, '人员管理 ', '01111 '


select
姓名,年龄,所对栏目,
min(substring(栏目权限,1,1))+
min(substring(栏目权限,2,1))+
min(substring(栏目权限,3,1))+
min(substring(栏目权限,4,1))+
min(substring(栏目权限,5,1)) as 栏目权限
from
@t
group by
姓名,年龄,所对栏目

/*
姓名 年龄 所对栏目 栏目权限
---------- ----------- ---------- ----------
王 28 人员管理 01111
王 28 系统管理 01001
*/
------解决方案--------------------
相同的两条记录的各个位上取最小?