如何用乘数计算列的总和

  • 本文关键字:计算 何用乘 sql sql-server
  • 更新时间 :
  • 英文 :


我已经触发了一个表,该表基本上总结了某个ID的总价格并在任何更改后更新另一个表。现在,我需要计算不同的货币,每种货币都有其自身的价值,并且我从另一个表中获得了货币的价值。我需要将每个更新的价格乘以其货币的价值并总和整个价格。有人可以帮我吗?

触发器本身就没有货币工作正常,我已经查找了" x*y = exp(ln(x( ln(y(("公式。我正在考虑在新表中收集所有价格和货币乘数并乘以行,但我不知道该怎么做或如何使用公式!

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [CMS].[HoldingSum]
   ON  [CMS].[PartOfOneHoldingADeal]
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
   SET NOCOUNT ON;
    declare @ChangedDataID uniqueidentifier;
    if exists (select * from inserted)  SET @ChangedDataID = (Select Top 1 inserted.IDHoldingADeal from inserted);
    else if exists (select * from deleted)  SET @ChangedDataID = (Select Top 1 deleted.IDHoldingADeal from deleted);
    UPDATE CMS.HoldingADeal
    SET PriceHoldingADeal = (Select Sum(PricePartOfOneHoldingADeal) total
            from CMS.PartOfOneHoldingADeal
             where PartOfOneHoldingADeal.IDHoldingADeal=@ChangedDataID)
    where HoldingADeal.IDHoldingADeal = @ChangedDataID;
END

我希望我想更新我的表格。

您要使用的公式,如果要在不同行中的值之间制作产品,则使用它。因此,在您的情况下,它不适用。您需要将每一行转换为基本货币(?(并更新该字段。

因此,在您的情况下(不知道您的模式(,我会说类似的话:

UPDATE CMS.HoldingADeal
    SET PriceHoldingADeal = (Select Sum(PricePartOfOneHoldingADeal * c.rate) total
            from CMS.PartOfOneHoldingADeal p
            join currencies c
                on p.currencyId = c.id
            where PartOfOneHoldingADeal.IDHoldingADeal=@ChangedDataID)
    where HoldingADeal.IDHoldingADeal = @ChangedDataID;

考虑到您有一个转换为基本货币的费率列。如果您的货币表有所不同,您可以随身携带它。另外,您需要确保您在那里拥有所有货币,否则查询将失败。

如果您考虑不在那里拥有基本货币,请进行左JOIN而不是加入,然后将Isnull添加到您的值

isnull(PricePartOfOneHoldingADeal * c.rate,PricePartOfOneHoldingADeal)

相关内容

  • 没有找到相关文章

最新更新