2017-08-17 58 views
-1

假設我們有200名學生和6個科目。輸入列在不使用聯盟的情況下獲得每列最高價值

Name | Subject1 | Subject2 | ... through Subject 6 

輸出只有3列:

Name | Subject | Highest Score 

我們需要受明智最高的射手,主題名稱一起和得分作爲輸出。我們如何在Informatica級別執行此操作?我們如何在不使用union的情況下在SQL級別執行此操作?

樣本數據:

Name |Sub1 |Sub2 |Sub3 |Sub4 |Sub5 |Sub6 
-----+-----+-----+-----+-----+-----+---- 
A |5 |67 |77 |6 |34 |43 
B |54 |54 |32 |3 |23 |21 
C |1 |23 |43 |45 |43 |21 
+0

聽起來GROUP BY主題與MAX(SCORE)。你有更多的信息,如樣本數據和期望的輸出? – Simon

+0

我在猜測使用'DECODE'的條件聚合 – scsimon

+0

當然。認爲這是示例數據: I/P: 名稱Sub1的分公司2 Sub3中Sub4中SUB5 Sub6劃 有5 67 77 6 34 43 乙54 54 32 3 23 21 的C 1 23 43 45 43 21 O/P: 名稱Sub_name最高 乙Sub1的54 甲分公司2 67 甲Sub3中77 çSub4中45 çSUB5 43 甲Sub6劃43 –

回答

0

容易在Informatica中,使用分揀與排序設置爲檢者得分(升序)。然後按主題排序輸入組的聚合器。

的SQL GROUP BY會照顧它即

SELECT MAXSCORES.SUBJECT, MAXSCORES.TOPRESULT, RESULTS.STUDENT AS TOPSCORER 
FROM (SELECT SUBJECT, MAX(SCORE) AS TOPRESULT FROM RESULTS GROUP BY SUBJECT) AS MAXSCORES 
WHERE MAXSCORES.SUBJECT = RESULTS.SUBJECT AND MAXSCORES.TOPRESULT = RESULTS.SCORE 
相關問題