簡體   English   中英

根據兩列計算求和字段

[英]Calculate a sum field based on two columns

我有一個正在嘗試運行的訪問查詢,但似乎無法正確執行。

我已經在計算按名稱和說明列分組的總時數。 我希望總欄基本上按名稱和描述欄給出小時數的總和

SELECT dbo_t_SAP_AttCodes.Description, Sum(dbo_v_MES_TcActivities.Hours) AS SumOfHours, 
    Left([supervisor1email],InStr([supervisor1email],".")-1) AS [Supervisor First Name], 
    Mid([supervisor1email],InStr([supervisor1email],".")+1,
    InStr([supervisor1email],"@")-InStr([supervisor1email],".")-1) 
    AS [Supervisor Last Name], (SELECT sum([hours]) FROM [dbo_v_MES_TcActivities]     
    WHERE [costctr]="106330" AND [clockin] Between DateAdd("d",-((Weekday(Date())-1)),
    Date()) And Date()) AS Total_Hours

FROM dbo_v_MES_TcActivities LEFT JOIN dbo_t_SAP_AttCodes 
    ON dbo_v_MES_TcActivities.AttCode = dbo_t_SAP_AttCodes.Code

WHERE (((dbo_v_MES_TcActivities.AttCode) Not Like "MEAL") 
    AND ((dbo_v_MES_TcActivities.CostCtr) Like "106330") 
    AND ((dbo_v_MES_TcActivities.ClockIn) Between DateAdd("d",-((Weekday(Date())-1)),
    Date()) And Date()))

GROUP BY dbo_t_SAP_AttCodes.Description, Left([supervisor1email],
    InStr([supervisor1email],".")-1), 
    Mid([supervisor1email],InStr([supervisor1email],".")+1,
    InStr([supervisor1email],"@")-InStr([supervisor1email],".")-1), 
    dbo_v_MES_TcActivities.Supervisor1Email

ORDER BY Mid([supervisor1email],InStr([supervisor1email],".")+1,
    InStr([supervisor1email],"@")-InStr([supervisor1email],".")-1);

編輯:這是當前輸出的樣子:

之前

這是我想看到的: 之后

考慮將子查詢轉換為相關子查詢,在該子查詢中,您將嵌套SELECT語句與主查詢中對應的行名稱進行匹配,而沒有Description (僅Name )分組。 由於Supervisor的名字和姓氏計算表達式,以下內容很長。

請注意:以下將表別名與submain一起使用 (相應地調整所有字段引用):

子查詢

SELECT --...same fields/expressions as original w/ 'main' alias...,
      (SELECT SUM(sub.[hours]) FROM [dbo_v_MES_TcActivities] sub    
       WHERE sub.[costctr]="106330" 
         AND sub.AttCode Not Like "MEAL"
         AND sub.[clockin] Between DateAdd("d",-((Weekday(Date())-1)), Date()) And Date()
         AND Left(sub.[supervisor1email], InStr(sub.[supervisor1email],".")-1) = 
             Left(main.[supervisor1email], InStr(main.[supervisor1email],".")-1) 

         AND Mid(sub.[supervisor1email], InStr(sub.[supervisor1email],".")+1,
                 InStr(sub.[supervisor1email],"@") - InStr(sub.[supervisor1email],".")-1) =
             Mid(main.[supervisor1email], InStr(main.[supervisor1email],".")+1, 
                 InStr(main.[supervisor1email],"@") - InStr(main.[supervisor1email],".")-1)
       ) AS Total_Hours
FROM dbo_v_MES_TcActivities main
LEFT JOIN dbo_t_SAP_AttCodes sap
      ON main.AttCode = sap.Code
--...same WHERE and GROUPBY as original w/ 'main' and 'sap' aliases...

派生表

或者,將兩個聚合查詢都轉換為派生表,並與主查詢連接。 在MS Access中,您甚至可以將兩個嵌套的SELECT語句另存為單獨的已保存查詢,並在FROMJOIN子句中引用它們。 再次注意表別名:

SELECT t1.Description, t1.SumOfHours, t1.[Supervisor First Name], t1.[Supervisor Last Name], 
       t2.TotalHours    
FROM (
      SELECT --...same fields/expressions as original...
      FROM dbo_v_MES_TcActivities main
      LEFT JOIN dbo_t_SAP_AttCodes sap
           ON main.AttCode = sap.Code
      --...same WHERE and GROUPBY as original...
      ) As t1
INNER JOIN
      (
       SELECT SUM(sub.[hours]),
              Left(sub.[supervisor1email], InStr(sub.[supervisor1email],".")-1) 
                    AS [Supervisor First Name],
              Mid(sub.[supervisor1email], InStr(sub.[supervisor1email],".")+1,
                 InStr(sub.[supervisor1email],"@") - InStr(sub.[supervisor1email],".")-1) 
                    AS [Supervisor Last Name]
       FROM [dbo_v_MES_TcActivities] sub    
       WHERE sub.[costctr]="106330" 
         AND sub.AttCode Not Like "MEAL"
         AND sub.[clockin] Between DateAdd("d",-((Weekday(Date())-1)), Date()) And Date()
       GROUP BY
              Left(sub.[supervisor1email], InStr(sub.[supervisor1email],".")-1),
              Mid(sub.[supervisor1email], InStr(sub.[supervisor1email],".")+1,
                  InStr(sub.[supervisor1email],"@") - InStr(sub.[supervisor1email],".")-1)
       ) AS t2
ON t1.[Supervisor First Name] = t2.[Supervisor First Name]
AND t1.[Supervisor Last Name] = t2.[Supervisor Last Name]        

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM