在不使用联盟的情况下获得每列最高价值

问题描述:

假设我们有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 –

容易在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