簡體   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