我必须消除值为X并重复的行。如果他们没有X,他们会留下来,如果他们有X但不会重复他们留下。你能帮忙吗?Oracle:如何选择不重复的行
表
Id Value 1. A. 2. X. 3. X. 3. C. 3. D. 4. X. 4. F 5. G 6. Z 7. X 8. X 8. G
从查询结果应该是:
1. A 2. X 5. G 6. Z 7. X
我必须消除值为X并重复的行。如果他们没有X,他们会留下来,如果他们有X但不会重复他们留下。你能帮忙吗?Oracle:如何选择不重复的行
表
Id Value 1. A. 2. X. 3. X. 3. C. 3. D. 4. X. 4. F 5. G 6. Z 7. X 8. X 8. G
从查询结果应该是:
1. A 2. X 5. G 6. Z 7. X
也许可以帮助:
SELECT Id,
Value
FROM(SELECT Id,
Value,
COUNT(*) OVER (PARTITION BY Id) cnt,
SUM(DECODE(Value, 'X', 1, 0)) OVER (PARTITION BY Id) sumx
FROM your_table
)
WHERE cnt = 1 OR sumx = 0;
我工作完美,谢谢sooo非常..这个社区的规则..!我很感激他们,期待着贡献并付出代价。祝大家有个美好的一天..! :) – TechAider 2014-10-17 13:48:34
是不是足够?
SELECT "Id", MIN("Value") "Value" FROM T
GROUP BY "Id" HAVING COUNT("Id") = 1
ORDER BY "Id"
它也会丢弃给定ID的多个唯一非X值。最起码,根据您的样本数据,它似乎产生期望的结果:
ID VALUE
1 A
2 X
5 G
6 Z
7 X
使用'在选择查询distinct'关键词,如果你想看到独特'Value'列值 – 2014-10-16 17:55:03
我无法理解你的问题,你能解释一下吗?谢谢 – 2014-10-16 17:56:17
SELECT id FROM Table1 GROUP BY Id COUNT(Id)= 1 – radar 2014-10-16 18:05:20