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