oracle中的排除方式


minus这个集合操作符号的作用是从一个结果集合中减掉另一个结果集中数据,也就是说从一个结果集中去除两个结果集中的共有部分。


下面是一些例子:

这个例子使用minus从第一个结果集中将两个结果集的公有的部分去除。

select * from a where col>= 10

minus

select * from b where col < 30

order by 6 desc;--排序, 其中6为字段在结果表中的列数。



使用minus例子需要注意的问题和前面的几个集合操作符相同,一是可以级联使用,二是每个select语句必须使用相同数量的列和相同类型的列名,但列名不必相同。

SELECT '0' AS SELECTED, ac.SENDNO, ac.SENDDATE, ac.CBDW, dw.DWJC, 
                DECODE(ac.ACCOUNTTYPE, 0, '职工', 1, '超转') ACCOUNTTYPE, BELONG, 
                ac.TCJE, ac.JE, ac.DWHZJE, ac.GRJBJE, 
                DECODE(ac.YWLX, 0, '退统筹账户回收', 1, '退单位账户回收', 2, '其他') YWLX 
                FROM MID_USER.MID_ACCOUNTBACK ac, SBVIEW_ZFDWXX dw 
                WHERE 
                NOT EXISTS (SELECT ex.SENDNO
                            FROM  MID_USER.MID_ACCOUNTBACK ex
                            WHERE ex.JE     = 0
                              AND ex.TCJE   = 0
                              AND ex.DWHZJE = 0
                              AND ex.GRJBJE = 0
                              AND ex.SENDNO = ac.SENDNO)
                AND ac.CBDW = dw.CBDW 
                AND CWOPFLAG = 0 
                AND ac.FEEAREA = '1020' 
                AND ac.ACCOUNTTYPE = 0                  
                AND ac.JE >= 0 AND ac.TCJE >=0 AND ac.DWHZJE>=0 AND ac.GRJBJE >=0 



SELECT '0' AS SELECTED, ac.SENDNO, ac.SENDDATE, ac.CBDW, dw.DWJC, decode(ac.ACCOUNTTYPE, 0, '职工', 1, '超转') ACCOUNTTYPE, 
                BELONG, 
                ac.TCJE, ac.JE, ac.DWHZJE, ac.GRJBJE, 
                decode(ac.YWLX, 0, '退统筹账户回收', 1, '退单位账户回收', 2, '其他') YWLX 
                FROM MID_USER.MID_ACCOUNTBACK ac, SBVIEW_ZFDWXX dw 
                WHERE ac.CBDW = dw.CBDW 
                AND CWOPFLAG = 0 
                AND ac.FEEAREA = '1020' 
                AND ac.ACCOUNTTYPE = 0                  
                AND ac.JE >= 0 AND ac.TCJE >=0 AND ac.DWHZJE>=0 AND ac.GRJBJE >=0 
                minus
                SELECT '0' AS SELECTED, ac.SENDNO, ac.SENDDATE, ac.CBDW, dw.DWJC, decode(ac.ACCOUNTTYPE, 0, '职工', 1, '超转') ACCOUNTTYPE, 
                BELONG, 
                ac.TCJE, ac.JE, ac.DWHZJE, ac.GRJBJE, 
                decode(ac.YWLX, 0, '退统筹账户回收', 1, '退单位账户回收', 2, '其他') YWLX 
                FROM MID_USER.MID_ACCOUNTBACK ac, SBVIEW_ZFDWXX dw 
                WHERE ac.CBDW = dw.CBDW 
                AND CWOPFLAG = 0 
                AND ac.FEEAREA = '1020' 
                AND ac.ACCOUNTTYPE = 0   
                AND ac.tcje = 0
                and ac.je = 0
                and ac.dwhzje = 0
                and ac.grjbje = 0
                

猜你喜欢

转载自eternal1025.iteye.com/blog/2270685