很抱歉这个问题很长。

我想我会在这个问题上失败,但是有机会。

是否可以将表中计算字段的计算结果应用于另一个表中的字段。

你有一个名为'mug'的桌子,这里有一个名为'color'的孩子(这会让我的英国头受伤但供应商来自美国,你打算做什么?)而这反过来又有一个孩子叫'大小'。每个表都有一个名为sold的字段。

对于每种特定颜色和尺寸的马克杯,size.sold递增1。

您希望color.sold是SUM size.sold WHERE size.colorid = color.colorid

的聚合

您希望mug.sold是SUM color.sold的聚合体.Where color.mugid = mug.mugid

反正有没有制作mug.sold和color.sold只是自己解决,或者我将不得不用触发器捣乱?

有帮助吗?

解决方案

您不能让计算列直接引用不同的表,但您可以让它引用用户定义的函数。这里是一个实现这样的解决方案的例子的链接。

http://www.sqlservercentral.com/articles/User -Defined +功能/ complexcomputedcolumns / 2397 /

其他提示

不,不可能这样做。计算列只能从同一行上其他字段的值派生。要计算另一个表的聚合,您需要创建一个视图。

如果您的应用需要显示统计信息,请提出以下问题:

  1. 是否真的有必要实时显示?如果是这样,为什么?如果真的需要这样做,那么你必须使用触发器来更新表。 链接到关于非规范化的简短维基百科文章。触发器将影响表更新的写入性能,并依赖于激活的触发器。
  2. 如果仅出于报告目的,您可以在视图或报告中进行计算。
  3. 如果有必要支持频繁的临时报告,您可能会进入数据集市和隔夜ETL过程的领域。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top