来自两个单独的SQL表的求和列

问题描述 投票:0回答:1

我目前正在尝试将不同表上的两列加在一起,但是当一个表为空时,它不会将不是的表中的列加起来。

这是基于SSMS构建的,用于PowerApps,遗憾的是不允许使用SQL触发器。相反,我使用的是由Flow激活的存储过程。其中之一将Units表中的列加在一起,并在我的StaffTotals表中的列上运行UPDATE。

在“总计”表上,我还有更多列,用于“评估”,这些列也可能被填写,并将输入到同一totalTeaching列中。但是,如果我的单位表为空,则SUM只会显示0,而不是在StaffTotals.Assessment列中添加任何数字。

WITH pretotalTeaching AS
(
    SELECT 
        dbo.StaffTotals.MMU_ID, 
        (SUM(dbo.StaffTotals.PG60Assessment) + SUM(dbo.StaffTotals.UG30Assessment) + 
         dbo.Units.[Teaching Hours] + SUM(dbo.Units.[Preparation Hours]) +
         SUM(dbo.Units.[Assessment Hours])) AS TeachingTotal
    FROM 
        dbo.Units
    INNER JOIN 
        dbo.StaffTotals ON dbo.StaffTotals.MMU_ID = dbo.Units.MMU_ID
    GROUP BY 
        dbo.StaffTotals.MMU_ID
)
UPDATE preStaffTotals
SET preStaffTotals.totalTeaching = pretotalTeaching.TeachingTotal
FROM dbo.StaffTotals as preStaffTotals
INNER JOIN pretotalTeaching ON preStaffTotals.MMU_ID = pretotalTeaching.MMU_ID;

即使单位表为空白,我也需要显示我的评估列总和。有帮助吗?

sql select sum ssms
1个回答
1
投票

INNER JOIN将仅包括两个表中都存在的行。您将需要研究某种形式的外部联接,以包括仅存在于单个表中的行。

选项包括左,右和完全外部联接,这取决于您是否可以安全地排除一个表(如果另一个表没有数据,还是要包括其中一个表而不管另一个表没有任何数据)。

© www.soinside.com 2019 - 2024. All rights reserved.