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

C# 在SQL查询或UI代码中计算金额(数量*价格),c#,mysql,sql,sql-server,C#,Mysql,Sql,Sql Server,在下面的查询中,我只获取带有数量的项目详细信息 和费率(基于某些业务逻辑计算数量和费率,以便使用子查询或聚合) 现在我需要用金额(即ItemQty*ItemPrice)在网格中列出这些详细信息 我有两个选项来计算金额(ItemQty*ItemPrice) 在sql查询本身中计算金额 再次使用整个子查询将值相乘 或外部选择查询来计算相同的值 将数据绑定到网格时,使用UI/代码部分计算ItemQty*ItemPrice 在这方面,我可以遵循哪一条?将它交给SQL,它会更快。 如果给UI线程,浏览器可

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

现在我需要用
金额
(即
ItemQty*ItemPrice
)在网格中列出这些详细信息

我有两个选项来计算金额(
ItemQty*ItemPrice

  • 在sql查询本身中计算金额

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

  • 将数据绑定到网格时,使用UI/代码部分计算ItemQty*ItemPrice

  • 在这方面,我可以遵循哪一条?

    将它交给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
    

    假设,表1有数量详细信息,表2有价格详细信息。

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

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

    这个链接很好地解释了你的问题


    希望这有帮助

    如果在代码中使用属性,则使用属性进行计算。 尽管这也取决于您的查询

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

    ii)计算查询返回100行

    在选项i)中,100行是额外的,因为您需要额外的信息来计算

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


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

    以上查询只是显示场景的示例。示例数据和您尝试过的查询将更有帮助@Suraz,thanx,增加了示例输出,但问题很简单,我在哪里可以计算sql查询本身或UI代码部分中的数量(数量*比率)?@abdul rasheed,在给定的链接中,我喜欢“Aristos”回答这就是我想说的。@KumarHars,谢谢你的建议,我得到了混合答案,所以我需要一些时间来阅读每一个答案和链接,从而得出一个解决方案,所以你的建议是,在UI部分进行计算(结果集中返回的记录在这两种情况下总是相同的,没有额外的计算记录)?是的。首选的方法是使用propert,以便在多个地方重用相同的代码。
    Sample Output 
    ------
    ItemId ItemName ItemQty ItemPrice Amount
    1      ABC      10.0    22.5      225.0
    2      PQR      12.35   156.5     1932.775
    
    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