minus这个集合操作符号的作用是从一个结果集合中减掉另一个结果集中数据,也就是说从一个结果集中去除两个结果集中的共有部分。
下面是一些例子:
这个例子使用minus从第一个结果集中将两个结果集的公有的部分去除。
select * from a where col>= 10
minus
select * from b where col < 30
order by 6 desc;--排序, 其中6为字段在结果表中的列数。
使用minus例子需要注意的问题和前面的几个集合操作符相同,一是可以级联使用,二是每个select语句必须使用相同数量的列和相同类型的列名,但列名不必相同。
下面是一些例子:
这个例子使用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