繁体   English   中英

如何将多行总计添加到一行

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM