【问题标题】:Mathematical Function数学函数
【发布时间】:2018-12-24 13:33:58
【问题描述】:

我的数据库里面有 3 个表:A、B、C

A:(项目,数量,位置); B:(项目,数量,位置); C:(项目,Loc1,Loc2,Loc3,Loc4.......,Loc16);

我需要一个函数来自动计算并通过以下方式自动更新 C 上的值:

Sum(A.qty)-Sum(B.Qty) 其中 A.Item=B.Item 且 A.Loc = B.Loc;结果应在正确列中的 C 中更新:从 Loc1 到 Loc16

在A或B中添加任何值时,应在C中执行自动计算。在C中,项目是唯一的。在 A 和 B 项目中可以在不同位置的许多交易中找到。

【问题讨论】:

  • 向我们展示您的尝试。我们可以帮助您完善您的代码。
  • 还显示示例数据和所需结果。您的问题现在几乎无法理解。
  • A : (Item , Qty, Loc); B:(项目,数量,位置); C:(项目,Loc1,Loc2,Loc3,Loc4.......,Loc16); Sum(A.qty)-Sum(B.Qty) 其中 A.Item=B.Item 且 A.Loc = B.Loc;结果应在正确列中的 C 中更新:从 Loc1 到 Loc16。
  • A 或 B 中添加任意值时,C 中应进行自动计算。C 中的项是唯一的。在 A 和 B 项目中可以在不同位置的许多交易中找到。
  • 评论不是关于您的问题的重要信息的地方;特别是当您提供的文本 格式化时(cmets 不允许格式化文本)。请改为编辑您的问题。谢谢。

标签: sql sql-server tsql


【解决方案1】:

我建议您创建一个提供所需信息的视图,而不是创建更难以跟进的触发器。请注意,我放置了部分查询,需要为从 3 到 15 的字段编写相同部分的代码:

CREATE VIEW C_View
    AS 
SELECT  C.Item, 
        C.Loc1, 
        COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc1), 0) -
        COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc1), 0) 
        AS Qty1,
        C.Loc2, 
        COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc2), 0) -
        COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc2), 0) 
        AS Qty2,
        ...
        C.Loc16, 
        COALESCE((SELECT SUM(Qty) FROM A WHERE A.Item = C.Item AND A.Loc = C.Loc16), 0) -
        COALESCE((SELECT SUM(Qty) FROM B WHERE B.Item = C.Item AND B.Loc = C.Loc16), 0) 
        AS Qty16,
FROM C;

【讨论】:

  • 建议的解决方案是否有效?如果是这样,请记得投票并标记为“响应”
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多