第二次开贴求助
表:mess
字段有:
lb userid sx bz
1 1 1 1
1 2 2 0
1 3 3 0
2 1 1 0
2 3 2 0
3 2 1 1
3 1 2 0
我现在想从这些数据里面得到的结果是:userid=2的bz=0的并且sx字段中大于userid=2的sx的值的bz=1才行,也许我说的不够明白,是这样的,这个是用于审批流程的,我想找出某个人需要审批的事项ID来,但这个审批是有先后顺序的,如果这个人前面的人还没有审批,那么这个人就看不到这个事项。字段bz就是用来标志是否审批过该事项
第一次开贴没有人回答
http://community.csdn.net/Expert/topic/5389/5389002.xml?temp=1.424807E-02
------解决方案--------------------看的有点晕
------解决方案--------------------1、创建临时表
create table #T (lb varchar(8),userid varchar(8),sx int,bz int)
2、输入数据
insert into #t(lb,userid,sx,bz)
select 1,1,1,1 union
select 1,2,2,0 union
select 1,3,3,0 union
select 2,1,1,0 union
select 2,3,2,0 union
select 3,2,1,1 union
select 3,1,2,0 union
select 4,2,1,0 union
select 4,1,2,0 union
select 4,3,3,0
3、UserID=2 有参考加的事项有
select * from #T where userid=2
lb userid sx bz
-------- -------- ----------- -----------
1 2 2 0
3 2 1 1
4 2 1 0
从结果中可以看到事项3用户已经办理,未办理的有1和4 ,并且不知道事项1和4是否上级已经办理,这并不是我们所要的结果
4、UserID=2 到办未办的事项可通过以下查询得到结果
select T1.*
from #T T1
left join #T T2 on T1.lb=T2.lb and T2.sx=T1.sx-1
where T1.userid=2 and T1.bz=0 and (t2.bz=1 or t2.bz is null)
lb userid sx bz
-------- -------- ----------- -----------
1 2 2 0
4 2 1 0
------解决方案--------------------给的分太少了,没吸引里啊
------解决方案--------------------userid=2的bz=0的并且sx字段中大于userid=2的sx的值的bz=1才行
这句直接把我搞傻了