2014-10-16 80 views
-2

我必須消除值爲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 
+1

使用'在選擇查詢distinct'關鍵詞,如果你想看到獨特'Value'列值 – 2014-10-16 17:55:03

+0

我無法理解你的問題,你能解釋一下嗎?謝謝 – 2014-10-16 17:56:17

+2

SELECT id FROM Table1 GROUP BY Id COUNT(Id)= 1 – radar 2014-10-16 18:05:20

回答

1

也許可以幫助:

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; 
+0

我工作完美,謝謝sooo非常..這個社區的規則..!我很感激他們,期待着貢獻並付出代價。祝大家有個美好的一天..! :) – TechAider 2014-10-17 13:48:34

1

是不是足夠?

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 

http://sqlfiddle.com/#!4/81baa/10

+0

工作像一個魅力,非常感謝 – TechAider 2014-10-17 12:56:35

+0

(重複的評論,因爲感覺是一樣的..謝謝)我工作完美,非常感謝你sooo ..這個社區規則..!我很感激他們,期待着貢獻並付出代價。祝大家有個美好的一天..! :) – TechAider 2014-10-17 13:49:07