从另一个表字段的值汇总而得到的SQL Server 2005计算列结果

时间:2020-03-06 15:04:17  来源:igfitidea点击:

很抱歉,标题题太长了。

我想我在这个失败者上是个失​​败者,但是机会不多。

是否可以使表中计算字段的计算成为应用于另一个表中字段的聚合函数的结果。

IE。

我们有一个名为"杯子"的桌子,有一个名为"颜色"的孩子(这会使我的英国人头受伤,但供应商来自美国,我们打算怎么办?),又有一个名为"尺寸'。每个表都有一个称为sold的字段。

对于出售的每种特定颜色和尺寸的杯子,size.sold都会增加1.

我们希望color.sold是SUM size.sold的合计。WHERE size.colorid = color.colorid

我们希望mug.sold是SUM color的集合。

无论如何,有做马克杯。出售和颜色。出售只是自己解决,还是我不得不去扣扳机吗?

解决方案

不,这是不可能的。计算列只能从同一行上其他字段的值得出。要从另一个表计算聚合,我们需要创建一个视图。

如果应用程序需要显示统计信息,请询问以下问题:

  • 真的需要实时显示吗?如果是这样,为什么?如果确实需要执行此操作,则必须使用触发器来更新表。这链接到有关非规范化的简短维基百科文章。触发器将影响表更新的写入性能,并依赖于触发器是否处于活动状态。
  • 如果仅出于报告目的而需要,则可以在视图或者报告中进行计算。
  • 如果有必要支持频繁的临时报告,那么我们可能已进入数据集市和通宵ETL流程的领域。

我们不能让计算列直接引用其他表,但可以让它引用用户定义的函数。这是实现这样的解决方案的示例的链接。

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