SQL Server 2005计算列结果来自另一个表字段的值的聚合
-
03-07-2019 - |
题
很抱歉这个问题很长。
我想我会在这个问题上失败,但是有机会。
是否可以将表中计算字段的计算结果应用于另一个表中的字段。
即
你有一个名为'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 /
其他提示
不,不可能这样做。计算列只能从同一行上其他字段的值派生。要计算另一个表的聚合,您需要创建一个视图。
如果您的应用需要显示统计信息,请提出以下问题:
- 是否真的有必要实时显示?如果是这样,为什么?如果真的需要这样做,那么你必须使用触发器来更新表。 这链接到关于非规范化的简短维基百科文章。触发器将影响表更新的写入性能,并依赖于激活的触发器。
- 如果仅出于报告目的,您可以在视图或报告中进行计算。
- 如果有必要支持频繁的临时报告,您可能会进入数据集市和隔夜ETL过程的领域。 醇>
不隶属于 StackOverflow