查询
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
我必须按emp_id
分组并计算sum(man_hours)
。
如何获得如下的价值
61 42 AP 52
答案 0 :(得分:1)
...不要看你的小组中间的两列如何形成,所以我会这样做:
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
答案 1 :(得分: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
答案 2 :(得分: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