2016-05-23 45 views
0

結果:彙總爲 '不止一個' 所有與一個以上的PER_ID

  • PER_ID,PER_FIRST_NAME,PER_LAST_NAME,RACE
  • 814,勒布朗 - 詹姆斯,黑人或非裔美國人
  • 211,馬努,吉諾比利,阿根廷
  • 211,馬努 - 吉諾比利,白
  • 274,德克 - 諾維茨基,德國
  • 274,德克 - 諾維茨基,白
  • 040,林書豪,亞洲

所需的結果:

  • PER_ID,PER_FIRST_NAME,PER_LAST_NAME,RACE
  • 814,勒布朗 - 詹姆斯,黑人或非裔美國人
  • 211,馬努,吉諾比利,超過一個
  • 274,德克 - 諾維茨基,超過一個
  • 040,林書豪,亞洲

已經轉過身。需要彙總RACE作爲'More Than One'所有RACE與多個PER_ID

這個代碼顯示兩列,不同per_id和2如果per_id = 2

select pr.per_id, count(*) 
    from schema1.person_race pr 
    group by pr.per_id 

有不成功地試圖等幾個功能來過濾,包括殼體和總和(情況計數。任何想法?

回答

0

在我看來,你正在混合數據值,那就是我將創建一個與「Race」列分開的「Country of Origin」的新列,這將導致Ginobili和Nowitzki在輸出中出現一行。

+0

這種情況下,學生可能自我識別爲兩個種族,並且都列在數據庫中。不要讓種族和原籍國混淆這個問題。 – user2743693

2

這樣的事情可能是?

select 
    PER_ID, PER_FIRST_NAME, PER_LAST_NAME, 
    case CNT when 1 then RACE else 'More Than One' end RACE 
from (
    select PER_ID, PER_FIRST_NAME, PER_LAST_NAME, max(RACE) RACE, count(1) CNT 
    from schema1.person_race 
    group by PER_ID, PER_FIRST_NAME, PER_LAST_NAME 
) t 
+0

看起來像一些不錯的代碼只是無法讓它工作。這是我所擁有的,它更具體。 WITH student_basic AS ( 由pr.per_id 選擇pr.per_id 從schema1.person_race PR 組) 選擇 SB.PER_ID, p.per_first_name, p.per_last_name 從schema1.person p 加入student_basic sb on sb.per_id = p.per_id inner join schema1.student_enrollment se on sb.per_id = se.per_id where se.stu_enr_status ='E' ; – user2743693

+0

上面的代碼給了我正確的計數,但只要我嘗試添加'多於一個'種族,它就會重新計算每個單獨的per_id,並在結果集中獲得多個per_id。 – user2743693