一.数据表
select * from my_test
二.维护表
select * from my_test_Maintain
三.逻辑
第一张表为数据表,item为一类数据的归类,state为此归类的状态,方便为ok和no
第二张表为客户维护表,item为一类数据的归类,isok记录客户维护的数据,因为oracle没有Boolean类型,所以1为需要此归类状态为ok的数据,0为不需要此归类状态为ok的数据, isno同理.
根据维护表我们可以大致知道,客户需要item为a,且状态(state)为ok的数据,而不要item为a,且状态(state)为no的数据,而b的ok,on状态客户都需要.
此时,采取如下思路:
select * from
(select t1.item,t1.state,t2.isok,t2.isno,
(case when state='ok' then isok when state='no' then isno end)is_stste
from
my_test t1,
my_test_Maintain t2
where t1.item=t2.item )where is_stste=1
增加一栏is_stste ,当数据表中的状态为ok时,is_stste的数据为isok的数据,no同理.如此我们就可以很好的划分出哪些是客户所需要的,哪些是客户不需要的.并将客户需要的数据呈现给用户(is_stste=1)
如图:
这里所得到的数据,已经没有item为a,state为no的数据了