0

クエリ

SELECT 
    TIMECARD.EMP_ID, TIMECARD.TIMECARD_ID, TIMECARD.TIMECARD_STATUS,
    TASK.MAN_HOURS
FROM 
    TRN_TIMECARD_ACTIVITY ACT
INNER JOIN 
    TRN_TIMECARD TIMECARD ON TIMECARD.TIMECARD_ID = ACT.TIMECARD_ID
INNER JOIN 
    TRN_TIMECARD_TASK TASK ON TASK.TIMECARD_ID = TIMECARD.TIMECARD_ID 
WHERE 
    ACT.TIMECARD_STATUS IN ('AP','RE')

出力:

61  42  AP  9
61  42  AP  9
61  43  AP  9
61  43  AP  9
61  47  AP  7

group by を取得しemp_idて計算する必要がありますsum(man_hours)

以下のような値を取得する方法

61  42  AP  52
4

3 に答える 3

1

...中央の 2 つの列がグループ内でどのように表示されるかがわからないので、次のようにします。

SELECT        TIMECARD.EMP_ID, SUM(TASK.MAN_HOURS)
FROM          TRN_TIMECARD_ACTIVITY ACT
INNER JOIN    TRN_TIMECARD TIMECARD ON TIMECARD.TIMECARD_ID=ACT.TIMECARD_ID
INNER JOIN    TRN_TIMECARD_TASK TASK ON TASK.TIMECARD_ID=TIMECARD.TIMECARD_ID 
WHERE         ACT.TIMECARD_STATUS IN('AP','RE')
GROUP BY      TIMECARD.EMP_ID
于 2013-02-19T12:41:52.547 に答える
0

希望する結果に基づいて、列のMinimum(最低TIMECARD.TIMECARD_ID) 値と のSum(合計) を指定していることがわかりますTASK.MAN_HOURS。(しかし、52 という値が得られる理由がわかりません)

SELECT  TIMECARD.EMP_ID,
        MIN(TIMECARD.TIMECARD_ID) time_card,
        TIMECARD.TIMECARD_STATUS,
        SUM(TASK.MAN_HOURS) totalHours
FROM    TRN_TIMECARD_ACTIVITY ACT
        INNER JOIN TRN_TIMECARD TIMECARD ON TIMECARD.TIMECARD_ID=ACT.TIMECARD_ID
        INNER JOIN TRN_TIMECARD_TASK TASK ON TASK.TIMECARD_ID=TIMECARD.TIMECARD_ID 
WHERE   ACT.TIMECARD_STATUS IN('AP','RE')
GROUP   BY TIMECARD.EMP_ID, TIMECARD.TIMECARD_STATUS
于 2013-02-19T12:41:58.693 に答える
0

これはあなたに役立つと思います...最小限のTIMECARD.TIMECARD_IDを取ります

SELECT TIMECARD.EMP_ID,
       MIN(TIMECARD.TIMECARD_ID) TIMECARD_ID, 
       TIMECARD.TIMECARD_STATUS,
       SUM(TASK.MAN_HOURS) HOURS 
FROM TRN_TIMECARD_ACTIVITY ACT
INNER JOIN
TRN_TIMECARD TIMECARD ON TIMECARD.TIMECARD_ID=ACT.TIMECARD_ID
INNER JOIN
TRN_TIMECARD_TASK TASK ON TASK.TIMECARD_ID=TIMECARD.TIMECARD_ID 
WHERE ACT.TIMECARD_STATUS IN('AP','RE')
GROUP BY TIMECARD.EMP_ID,TIMECARD.TIMECARD_STATUS
于 2013-02-19T12:42:11.573 に答える