现在有一张视图按分类查处重复记录比如现在有三个分类,自营,资管,研究这三个类型的数据都在这个视图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
自营 001 2资管 002 1
资管 001 2研究 003 2
研究 001 2
就是把类型为自营,和资管的数据进行对比,如果stockcode相同就查出来,结果
type Stockcode mairu自营 001 1
自营 001 2
资管 001 2
type Stockcode mairu自营 001 1
自营 001 2
资管 001 2
----------------
看你这样的结果貌似没做什么特定的逻辑处理,而只是查询出了Stockcode='001';
我觉得以下查询就可以得出结果,不知道是否误解了你的意思.
SELECT type ,Stockcode ,mairu WHERE Stockcode='001';
select m.* from tb m where exists(select 1 from
(select type , mairu from (select distinct type , mairu from tb) t group by type , mairu having count(1) > 1) n
where n.type = m.type)
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