2014-01-29 66 views
-2

我有一個表,看起來像這樣Oracle sql語句,如何爲當前案例創建好聲明?

|id|name|problem| 
1 A1 Good 
2 A2 Bad 
1 A1 Good 
2 A2 Good 

我所期望從這個表recive,獨特ID我們可以有不同的問題

如果如A1 =好所有情況下,我需要返回1 A1好,

如果我有A2 =好A2 =壞我需要返回2 A2壞

預期結果應該看起來像

|id|name|problem| 
1 A1 Good 
2 A2 Bad 

感謝先進

ADD: 所以我覺得我找到解決方案它看起來很簡單:

select T.id,T.name,min(T.problem) from table T group by T.id,T.name 

感謝所有嘗試幫助的人。

+0

因此,您需要爲A2返回Bad,當表中的兩個值出來時,它有一個Bad。如果A2的這兩個值都是好的,那麼您將返回A2的好。對? – Incognito

+0

是的,你說得對。 –

+0

你能再次閱讀你的問題,並確認這足夠清楚了嗎?你如何解釋以及如何按預期發佈的內容不太清楚。 – SriniV

回答

0

像這樣的東西(雖然我敢肯定不是100%我理解這個問題)

select id, 
     name, 
     case 
      when total_count = good_count then 'Good' 
      else 'Bad' 
     end as problem 
from (
    select id, 
     name, 
     count(*) as total_count, 
     case (when problem = 'Good' then 1 end) as good_count 
    from the_table 
    group by id, name 
) 

這對針對每個ID /名稱組合的全部項目和計算的「好」項目的數量。如果總計數等於Good將顯示的「好」計數,否則將顯示「錯誤」

+0

謝謝,我現在試試 –