非常感谢楼上的解答!
我要的是这样的:
SQL> select * from price;
ID PRICE SYSID
---------- ---------- ----------
10 1300 1
10 2450 2
20 1500 3
20 2000 4
30 800 5
30 800 6
40 1500 7
40 1500 8
40 1500 9
50 1600 10
60 2000 11
60 2000 12
60 2500 13
13 rows selected
然后我要选取出来的是:
ID PRICE SYSID
---------- ---------- ----------
10 1300 1
10 2450 2
20 1500 3
20 2000 4
60 2500 13
即sysid为1、2、3、4、13的数据。
用4楼的方法,多选了sysid为10的数据--ID号没出现重复的数据不选取;同时少选取了13。
用5楼的方法,多选了sysid为11、12的数据--ID号重复同时price重复的,要消除掉。
附4楼方法:
SQL> select id, price,sysid
2 from
3 (select id,
4 price,sysid,
5 count(*) over(partition by id) cnt1,
6 count(distinct price) over(partition by id) cnt2
7 from price)
8 where cnt1 = cnt2;
ID PRICE SYSID
---------- ---------- ----------
10 1300 1
10 2450 2
20 1500 3
20 2000 4
50 1600 10
5楼方法:
SQL> SELECT UNIQUE A.*
2 FROM price A, price B
3 WHERE A.ID=B.ID
4 AND A.PRICE<>B.PRICE;
ID PRICE SYSID
---------- ---------- ----------
10 1300 1
10 2450 2
20 1500 3
20 2000 4
60 2000 11
60 2000 12
60 2500 13
7 rows selected
[本帖最后由 wouwouwou 于 2011-8-3 16:50 编辑]