【问题标题】:Calculate TotalAmount from all Rows in Table从表中的所有行计算 TotalAmount
【发布时间】:2011-06-28 22:58:03
【问题描述】:

你能帮我解决这个问题吗?我正在尝试计算价格表中所有行的总和,但这些值从未相加,现在似乎也不再计算了。

我有以下几点:

@{
    decimal money = 0.00m;
    var prices = "SELECT Price, SUM(Price) FROM PriceTable GROUP BY Price";

            var database = Database.Open("MYDB");
            database.QuerySingle(prices);
            money = prices.AsDecimal();
}

然后在我的 HTML 中某处输入:

@money // to display the totalAmount

我做得对吗?我已经搜索过这个,但令人惊讶的是似乎没有太多关于这个的信息,不过我可能没有使用正确的关键字。

谢谢

【问题讨论】:

    标签: c# .net sql razor webmatrix


    【解决方案1】:

    改变

    var prices = "SELECT Price, SUM(Price) FROM PriceTable GROUP BY Price";
    

    var prices = "SELECT SUM(Price) FROM PriceTable";
    

    如果你想要的是所有行的总和,则不需要分组。

    还有;

    var result = database.QuerySingle(prices);
    money = Convert.ToDecimal(result);
    

    【讨论】:

    • 谢谢@Chris,一开始我没有 GROUP BY,但是我在收到关于某些聚合的东西的 sn 错误后添加了它,某些东西不包含 GROUP - 所以它突然出现在我的脑海中,也许它要求 GROUP BY :P
    • @Chris 谢谢你,但它仍然没有显示总金额。它只是说 0 美元。
    • 我不知道为什么它没有显示,jsut假设这是sql的问题。
    • 知道了。您实际上是在尝试将 sql 语句转换为小数。将您的代码更改为类似; var result = database.QuerySingle(prices);然后将结果转换为十进制。
    【解决方案2】:

    那是因为您也添加了价格本身。您只对不同的价格求和,因此对于每个唯一的价格,总和与价格相同。

    简而言之:删除价格和分组依据。只需查询整个表的 sum(price)。

    【讨论】:

      【解决方案3】:

      {@money}

      【讨论】:

      • 不,如果只是一件事,您只需将 @ 放在前面,但如果有不止一件事,您必须将它放在代码块中 @{ ... } - 据我所知
      • 如果你试试这个:money = Decimal.parse(prices);
      • 如果我尝试它会发疯:“异常详细信息:System.FormatException:输入字符串的格式不正确。”
      • 查询(C# 部分)不会带回一个 DataTable 或其他类似的东西,而不是一个数字吗?我的意思是你也可以试试这个:“SELECT SUM(Price) AS 'Price' FROM PriceTable”,代码是:money = prices["Price"].AsDecimal();
      • 这就是我最初尝试的方法,但它总是带回错误的计算。即使行中的值都没有改变,但每次我刷新页面时,计算都是不同的
      猜你喜欢
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多