1

このコード:

SELECT  
    O896IA_VEMPPRSA.REG_NR & O896IA_VEMPPRSA.DIS_NR AS RRDD,  
    Mgmt_Lvl.MGMT_LVL,  
    Count(O896IA_VEMPPRSA.SYS_EMP_ID_NR) AS Total,  
    Sum(IIf(emp_rlc_ir="Y",1,0)) AS Relocate,  
    Sum(IIf(emp_int_asn_ir="Y",1,0)) AS International_Assignment,  
    Sum(IIf(emp_tvl_ir="y",1,0)) AS Travel,  
    Sum(IIf(emp_spc_asn_ir="y",1,0)) AS Special_Assignment,  
    Sum(IIf([emp_rlc_ir]="Y",1,0))/[Total] AS Relocate_Percent,  
    Sum(IIf([emp_int_asn_ir]="Y",1,0))/[Total] AS International_Assignment_Percent,  
    Sum(IIf([emp_tvl_ir]="y",1,0))/[Total] AS Travel_Percent,  
    Sum(IIf([emp_spc_asn_ir]="y",1,0))/[Total] AS Special_Assignment_Percent

FROM (O867IA_VPJOBCO INNER JOIN Mgmt_Lvl  
    ON O867IA_VPJOBCO.JOB_GRP_CD = Mgmt_Lvl.JOB_GRP_CD)  
INNER JOIN (O896IA_VEMPPRSA INNER JOIN O867IA_VCAREER  
    ON O896IA_VEMPPRSA.SYS_EMP_ID_NR = O867IA_VCAREER.SYS_EMP_ID_NR)  
    ON O867IA_VPJOBCO.JOB_CLS_CD = O896IA_VEMPPRSA.JOB_CLS_CD

WHERE (((O896IA_VEMPPRSA.EMP_EMT_STS_CD)<>"T"))

GROUP BY  
    O896IA_VEMPPRSA.REG_NR & O896IA_VEMPPRSA.DIS_NR, 
    Mgmt_Lvl.MGMT_LVL,  
    Mgmt_Lvl.Ranking

ORDER BY Mgmt_Lvl.Ranking DESC;

従業員向けのアンケートの回答を教えてくれます。問題は、このアンケートが毎年行われていることです。最新の回答が必要です。

REC_EFF_STT_DT に MAX を使用してみましたが、一部の従業員の回答は毎年変更されたため、(私が必要とする) グループによって、複数年の回答が返されます。

最新のデータを引き出すことができるソリューションはありますか? 従業員が 2008 年、2009 年、および 2010 年に調査を行ったが、2011 年、2012 年、または 2013 年ではない場合、必ずしも 2013 年である必要はありません。私は欲しい。

4

1 に答える 1

1

次のデータを含む [Survey] という名前のテーブルがあるとします

RespondentID    SurveyDate  Answer1                         Answer2
------------    ----------  ----------------------------    ----------------------------
1               2013-01-01  answer 1, respondent 1, 2013    answer 2, respondent 1, 2013
1               2012-01-01  answer 1, respondent 1, 2012    answer 2, respondent 1, 2012
2               2012-01-01  answer 1, respondent 2, 2012    answer 2, respondent 2, 2012

次の形式のクエリを使用できます...

SELECT Survey.*
FROM
    Survey
    INNER JOIN
    (
        SELECT RespondentID, MAX(SurveyDate) AS MaxOfSurveyDate
        FROM Survey
        GROUP BY RespondentID
    ) AS MaxDate
        ON Survey.RespondentID = MaxDate.RespondentID
            AND Survey.SurveyDate = MaxDate.MaxOfSurveyDate

...各回答者の最新の行を返します。この場合は次のようになります。

RespondentID    SurveyDate  Answer1                         Answer2
------------    ----------  ----------------------------    ----------------------------
1               2013-01-01  answer 1, respondent 1, 2013    answer 2, respondent 1, 2013
2               2012-01-01  answer 1, respondent 2, 2012    answer 2, respondent 2, 2012
于 2013-09-10T17:30:01.283 に答える