[英]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.