我对此有一个非常具体的问题。我知道我可以使用SUM
来对两列的值求和,但是,除了运行基本查询之外,还有一些其他需求需要处理。
表格中需要有第三列,其中包含两列的值。
每当创建一行或更新其他列中的两个值中的任何一个时,都需要更新第三列。
是否可以通过在列中设置默认值来实现这一点,并在更新其他两列中的任何一列时使用某种引用进行更新?这将是最简单的解决方案。或者,我是否需要触发/存储过程组合,无论何时创建行或更新这两列中的一列,都会触发并运行?如果是这样,我将如何实施?
这是表创建:
CREATE TABLE [dbo].[haems_callLog]
(
[month] [int] NOT NULL,
[year] [int] NOT NULL,
[total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_total] DEFAULT ((0)),
[station] [nvarchar](4) NOT NULL CONSTRAINT [DF_haems_callLog_station] DEFAULT (N'-'),
[station1_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station1_total] DEFAULT ((0)),
[station2_Total] [int] NOT NULL CONSTRAINT [DF_haems_callLog_station2_total] DEFAULT ((0))
) ON [PRIMARY]
总字段默认为“0”。在创建记录时,只有月份,年份,工作站以及station1_Total
或station2_Total
列将被输入数据。然后,总列需要取station1_Total
或station2_Total
的值,并且除了另一列的“0”默认值之外,还要使用求和值填充。
更新记录时,可以更改这两列中的任何一列,然后需要将其反映在总列中的总和值中。
提前感谢您的帮助和指导!
答案 0 :(得分:3)
只需定义计算列,如下所示:
ALTER TABLE [dbo].[haems_callLog]
ADD GrandTotal AS [station1_Total] + [station2_Total] PERSISTED
这会添加一个新列,它将始终反映这两列的总和 - 无论这些列包含哪些列。如果更新了两个基础列中的任何一个,则会始终更新此新计算列。