在SQL查询或UI代码中计算金额(数量*价格)

时间:2017-03-16 05:02:18

标签: c# mysql sql sql-server

在下面的查询中,我只是用其数量获取项目详细信息 和速率(基于某些业务逻辑计算的数量和速率,以便使用子查询或聚合)。

SELECT  ItemID,
        ItemName,
        (...
        ...
        )   AS  ItemQty,
        (....
        ....
        )   AS  ItemPrice
FROM    ....

现在我需要在Amount(即ItemQty * ItemPrice)的网格中列出这些详细信息。

Sample Output 
------
ItemId ItemName ItemQty ItemPrice Amount
1      ABC      10.0    22.5      225.0
2      PQR      12.35   156.5     1932.775

我有两个选项来计算AmountItemQty * ItemPrice

  1. 计算sql查询本身的数量

    再次使用整个子查询来乘以值 或外部选择查询来计算相同的

  2. 使用UI /代码部分计算ItemQty * ItemPrice,同时将数据绑定到网格。
  3. 我能跟随哪一个?

4 个答案:

答案 0 :(得分:2)

如果您在代码中使用属性,则使用use属性进行计算。 虽然它也取决于您的查询。

i)假设一个查询不计算,结果集返回为200。

ii)计算查询返回100行。

选项i中的

100行是额外的,因为您需要额外的信息来计算。

在这种情况下,计算应该在proc本身完成。

如果两个选项都返回100行,则在UI中执行计算部分。

答案 1 :(得分:1)

您应该通过在UI中进行逻辑来隔离逻辑。

Is SQL code faster than C# code?

此链接很好地解释了您的问题。

希望这有帮助!

答案 2 :(得分:0)

将它提供给SQL,它会更快。 如果您提供UI线程,浏览器可能会冻结基于行数。 并且不要使用子查询并始终尝试SQL连接。

SELECT  ItemID,
        ItemName,
        ItemQty,
        ItemPrice
        (ItemQty * ItemPrice) as Amount
FROM    table

 SELECT  ItemID,
            ItemName,
            table1.ItemQty,
            table2.ItemPrice
            (table1.ItemQty * table2.ItemPrice) as Amount
    FROM    table inner join ....
            table2 inner join ....
            table3

假设,table1有数量详情,table2有价格详情。

答案 3 :(得分:0)

您应该在UI /后端代码中计算金额,因为数量和价格也将在网格中显示。您可以通过计算金额来应用一些业务逻辑,而不会影响sql脚本的性能。