[英]How to add multiple rows into one row with total
如何将多行合计为一行? 我正在尝试添加两行数据并将数据输出到一项特定工作的一行中。 我将输出缩减为一项工作,但是一旦弄清楚如何将两行合并为一个,就将在输出中放置多个工作。 每个工作有两名雇员,因此我将必须将两个雇员的工作时间加在一起,得出每个工作的总工作时间。
SELECT
TJ.intJobID
,TJ.strJobDescription
,TJS.strJobStatus
,SUM(TJE.intHoursWorked) AS intTotalHoursWorked
FROM
TJobs AS TJ
,TJobStatus AS TJS
,TJobEmployees AS TJE
,TEmployees AS TE
WHERE
TJ.intJobID = TJE.intJobID
AND TJ.intJobStatusID = TJS.intJobStatusID
AND TE.intEmployeeID = TJE.intEmployeeID
AND TJ.intJobID = 1
GROUP BY
TJ.intJobID
,TJE.intEmployeeID
,TJ.strJobDescription
,TJS.strJobStatus
,TJE.intHoursWorked
/*
Output I'm Getting
intJobID strJobStatus intTotalHoursWorked
1 Complete 50
1 Complete 42
Wanted Output
intJobID strJobStatus intTotalHoursWorked
1 Complete 92
*/
SELECT
TJ.intJobID
,TJS.strJobStatus
,SUM(TJE.intHoursWorked) AS intTotalHoursWorked
...
...
GROUP BY
TJ.intJobID
,TJS.strJobStatus
我仔细检查了您的查询,发现表太多。 因为你真的不需要TEmployees
SELECT
TJ.intJobID
,TJ.strJobDescription
,TJS.strJobStatus
,SUM(TJE.intHoursWorked) AS intTotalHoursWorked
FROM TJobs AS TJ
JOIN TJobStatus AS TJS
ON TJ.intJobStatusID = TJS.intJobStatusID
JOIN TJobEmployees AS TJE
ON TJ.intJobID = TJE.intJobID
GROUP BY
TJ.intJobID
,TJS.strJobStatus
一种选择是使用CTE ..因为我们不知道您的数据以及导致多列分组的哪一列
;with cte
as
(
SELECT
TJ.intJobID
,TJ.strJobDescription
,TJS.strJobStatus
,SUM(TJE.intHoursWorked) AS intTotalHoursWorked
FROM
TJobs AS TJ
,TJobStatus AS TJS
,TJobEmployees AS TJE
,TEmployees AS TE
WHERE
TJ.intJobID = TJE.intJobID
AND TJ.intJobStatusID = TJS.intJobStatusID
AND TE.intEmployeeID = TJE.intEmployeeID
AND TJ.intJobID = 1
GROUP BY
TJ.intJobID
,TJE.intEmployeeID
,TJ.strJobDescription
,TJS.strJobStatus
,TJE.intHoursWorked
)
select
intJobID,
max(strJobStatus) as 'strJobStatus',
sum(intTotalHoursWorked) as 'intTotalHoursWorked'
from cte
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.