当前位置: 代码迷 >> Oracle管理 >> ,按条件查出一张试图中的相同记录
  详细解决方案

,按条件查出一张试图中的相同记录

热度:5   发布时间:2016-04-24 05:28:36.0
在线等,按条件查出一张试图中的相同记录
现在有一张视图按分类查处重复记录

比如现在有三个分类,自营,资管,研究

这三个类型的数据都在这个视图

type Stockcode mairu  

自营 001 1
自营 001 2

资管 002 1
资管 001 2

研究 003 2
研究 001 2


就是把类型为自营,和资管的数据进行对比,如果stockcode相同就查出来,

结果
type Stockcode mairu

自营 001 1
自营 001 2
资管 001 2


------解决方案--------------------
自营stockcode相同的数据,并且资管没有stockcode和它相同的时候,这种数据应该不检索出来
SQL code
SQL> WITH t AS (  2      SELECT '自营' ttype,'001' stockcode,1 mairu FROM dual UNION ALL  3      SELECT '自营' ttype,'001' stockcode,2 mairu FROM dual UNION ALL  4      SELECT '自营' ttype,'003' stockcode,1 mairu FROM dual UNION ALL  5      SELECT '自营' ttype,'003' stockcode,2 mairu FROM dual UNION ALL  6      SELECT '自营' ttype,'004' stockcode,2 mairu FROM dual UNION ALL  7      SELECT '资管' ttype,'002' stockcode,1 mairu FROM dual UNION ALL  8      SELECT '资管' ttype,'001' stockcode,2 mairu FROM dual UNION ALL  9      SELECT '资管' ttype,'005' stockcode,2 mairu FROM dual UNION ALL 10      SELECT '资管' ttype,'005' stockcode,2 mairu FROM dual UNION ALL 11      SELECT '研究' ttype,'003' stockcode,2 mairu FROM dual UNION ALL 12      SELECT '研究' ttype,'001' stockcode,2 mairu FROM dual 13  ) 14  SELECT m.ttype, 15         m.stockcode, 16         m.mairu 17    FROM (SELECT t.*, 18                 COUNT(*) OVER(PARTITION BY t.stockcode) total_cn, 19                 COUNT(*) OVER(PARTITION BY t.ttype, t.stockcode) cn 20            FROM t 21           WHERE t.ttype IN ('自营', '资管')) m 22   WHERE m.total_cn <> cn 23  ; TTYPE  STOCKCODE      MAIRU------ --------- ----------自营   001                1自营   001                2资管   001                2
  相关解决方案