我目前正在尝试将不同表上的两列加在一起,但是当一个表为空时,它不会将不是的表中的列加起来。
这是基于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;
即使单位表为空白,我也需要显示我的评估列总和。有帮助吗?
INNER JOIN将仅包括两个表中都存在的行。您将需要研究某种形式的外部联接,以包括仅存在于单个表中的行。
选项包括左,右和完全外部联接,这取决于您是否可以安全地排除一个表(如果另一个表没有数据,还是要包括其中一个表而不管另一个表没有任何数据)。