12
返回列表 发新帖
楼主: yncxlyq

想查询两表不匹配的名单

[复制链接]
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
11#
发表于 2017-2-8 08:53 | 只看该作者
反正思路是full join,剩下的就是改吧改吧。

使用道具 举报

回复
论坛徽章:
4
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222012新春纪念徽章
日期:2012-01-04 11:55:05美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
12#
 楼主| 发表于 2017-2-8 09:54 | 只看该作者
select new_djxh djxh,
       max(dsqc_zspm_dm) zspm_dm,
       decode(count(*), 1, null, new_djxh) new_djxh,
       max(sz_zspm) sz_zspm
  from (select d.djxh dsqc_djxh,
               d.zspm_dm dsqc_zspm_dm,
               c.djxh dsqc_djxh,
               c.zspm_dm sz_zspm,
               nvl(d.djxh, c.djxh) new_djxh,
               decode(d.zspm_dm, c.zspm_dm, null, 1) flag
          from hx_zs.zs_hd_dqdehd_jg d
          full outer join hx_rd.rd_sfzrdxxb c
            on d.zgswskfj_dm like '1532301%'
           and d.zsxm_dm = '10101'
           and d.djxh = c.djxh
           and d.zsxm_dm = c.zsxm_dm
           and d.zspm_dm = c.zspm_dm
           and (d.zfbz_1 = 'N' or d.zfbz_1 is null) --未作废
           and d.hdzxqq < d.sjzxqz --核定执行期起小于实际执行期止
           and (d.hdzxqz >= sysdate OR d.hdzxqz is null)
           and d.hdzxqq >= c.rdyxqq
           and d.hdzxqz <= c.rdyxqz
           and c.yxbz = 'Y' --有效
           and c.rdyxqq <= sysdate --当前有效
           and c.rdyxqz >= sysdate
           )
where flag = 1
group by new_djxh

运行结果如下,相匹配的没有去掉,请问各位高手,语句如何修改
DJXH        ZSPM_DM        NEW_DJXH        SZ_ZSPM
10115301000025193054        101014006        10115301000025193054        101014001
10115301000025131474        101014001        10115301000025131474        101014001
10115301000024561382        101010398        10115301000024561382        101014001
10115301000025721046        101014001        10115301000025721046       
10115301000025908496        101014001        10115301000025908496        101014001
10115301000025080134        101014001        10115301000025080134        101014001
10115301000025233210        101014001        10115301000025233210        101014001
10115301000024317905        101014001        10115301000024317905        101014001
10115301000025357664        101014001        10115301000025357664        101014001
10115301000025828864        101010398        10115301000025828864        101010398
10115301000025560926        101014001        10115301000025560926        101014001
10115301000025620869        101014001        10115301000025620869        101014001
10115301000025018506        101014001        10115301000025018506        101014001
10115301000025249551        101014001        10115301000025249551        101014001
10115301000024624685        101014001        10115301000024624685        101014001
10115301000025105524        101011099        10115301000025105524        101011099
10115301000025378195        101014001        10115301000025378195        101014001
10115301000024400466        101014001        10115301000024400466        101014001
10115301000025159204        101014001        10115301000025159204        101014001
10115301000024520808        101014001        10115301000024520808        101014001
10115301000024840436        101014001        10115301000024840436        101014001

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
13#
发表于 2017-2-8 10:08 | 只看该作者
相匹配的没有去掉
外面再套一层where not (DJXH =NEW_DJXH and   ZSPM_DM    =    SZ_ZSPM)

使用道具 举报

回复
论坛徽章:
4
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222012新春纪念徽章
日期:2012-01-04 11:55:05美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
14#
 楼主| 发表于 2017-2-8 10:53 | 只看该作者
〇〇 发表于 2017-2-8 10:08
相匹配的没有去掉
外面再套一层where not (DJXH =NEW_DJXH and   ZSPM_DM    =    SZ_ZSPM)

elect *
  from (select new_djxh djxh,
               hdzxqq,
               hdzxqz,
               rdyxqq,
               rdyxqz,
               max(dsqc_zspm_dm) dsqc_zspm_dm,
               decode(count(*), 1, null, new_djxh) new_djxh,
               max(sz_zspm) sz_zspm
          from (select d.djxh dsqc_djxh,
                       d.zspm_dm dsqc_zspm_dm,
                       c.djxh dsqc_djxh,
                       c.zspm_dm sz_zspm,
                       nvl(d.djxh, c.djxh) new_djxh,
                       d.hdzxqq,
                       d.hdzxqz,
                       c.rdyxqq,
                       c.rdyxqz,
                       decode(d.zspm_dm, c.zspm_dm, null, 1) flag
                  from hx_zs.zs_hd_dqdehd_jg d
                  full outer join hx_rd.rd_sfzrdxxb c
                    on d.zgswskfj_dm like '1532301%'
                   and d.zsxm_dm = '10101'
                   and d.djxh = c.djxh
                   and d.zsxm_dm = c.zsxm_dm
                   and d.zspm_dm = c.zspm_dm
                   and (d.zfbz_1 = 'N' or d.zfbz_1 is null) --未作废
                   and d.hdzxqq < d.sjzxqz --核定执行期起小于实际执行期止
                   and d.sjzxqz >= sysdate
                   and (d.hdzxqz >= sysdate OR d.hdzxqz is null)
                   and d.hdzxqq >= c.rdyxqq
                   and d.hdzxqz <= c.rdyxqz
                   and c.yxbz = 'Y' --有效
                   and c.rdyxqq <= sysdate --当前有效
                   and c.rdyxqz >= sysdate)
         where flag = 1
        
         group by new_djxh,
               hdzxqq,
               hdzxqz,
               rdyxqq,
               rdyxqz)
where not (new_djxh = new_djxh and dsqc_zspm_dm = sz_zspm)

执行无结果

使用道具 举报

回复
论坛徽章:
4
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222012新春纪念徽章
日期:2012-01-04 11:55:05美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
15#
 楼主| 发表于 2017-2-8 10:59 | 只看该作者
yncxlyq 发表于 2017-2-8 10:53
elect *
  from (select new_djxh djxh,
               hdzxqq,

如果显示不加hdzxqq, hdzxqz, rdyxqq, rdyxqz,可执行有结果

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
16#
发表于 2017-2-8 12:28 | 只看该作者
yncxlyq 发表于 2017-2-8 09:54
select new_djxh djxh,
       max(dsqc_zspm_dm) zspm_dm,
       decode(count(*), 1, null, new_djxh) ...

我不是前面说了吗, 你目前给的测试数据已经发生了变化, 因为我的语句就是基于你测试数据写的。
那么, 你要用数据举例, 把你目前肯碰到的所有的特殊情况用数据举例, 然后给出最终的结果, 否者靠大家猜没有意义

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
17#
发表于 2017-2-8 13:36 | 只看该作者
SQL> with t as(select mod(level,2) a,mod(level,3) b,mod(level,4) c,mod(level,5) d from dual connect by level<=20)
  2  select * from t;

         A          B          C          D
---------- ---------- ---------- ----------
         1          1          1          1
         0          2          2          2
         1          0          3          3
         0          1          0          4
         1          2          1          0
         0          0          2          1
         1          1          3          2
         0          2          0          3
         1          0          1          4
         0          1          2          0
         1          2          3          1
         0          0          0          2
         1          1          1          3
         0          2          2          4
         1          0          3          0
         0          1          0          1
         1          2          1          2
         0          0          2          3
         1          1          3          4
         0          2          0          0

已选择20行。

已用时间:  00: 00: 00.09
SQL> with t as(select mod(level,2) a,mod(level,3) b,mod(level,4) c,mod(level,5) d from dual connect by level<=20)
  2  select * from t where not(a=c and b=d);

         A          B          C          D
---------- ---------- ---------- ----------
         0          2          2          2
         1          0          3          3
         0          1          0          4
         1          2          1          0
         0          0          2          1
         1          1          3          2
         0          2          0          3
         1          0          1          4
         0          1          2          0
         1          2          3          1
         0          0          0          2
         1          1          1          3
         0          2          2          4
         1          0          3          0
         0          0          2          3
         1          1          3          4
         0          2          0          0

已选择17行。

已用时间:  00: 00: 00.17
SQL> with t as(select mod(level,2) a,mod(level,3) b,mod(level,4) c,mod(level,5) d from dual connect by level<=20)
  2  select * from t where (a=c and b=d);

         A          B          C          D
---------- ---------- ---------- ----------
         1          1          1          1
         0          1          0          1
         1          2          1          2

已用时间:  00: 00: 00.05
SQL>

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表