添加SQL查询返回的值以获得总数

本文关键字:SQL 查询 返回 添加 | 更新日期: 2023-09-27 18:05:18

我有一个函数,根据订单id从SQL表中获取用户订单中每个商品的Quantity和Weight:

protected decimal getOrderWeight(int orderid)
{
    string sqlCmd = "SELECT Weight, Quantity FROM OrderItems WHERE OrderId = @OrderId";
    int qty = 0;
    decimal wgt = 0;
    decimal totalWeight = 0;
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        cn.Open();
        SqlCommand cmd = new SqlCommand(sqlCmd, cn);
        cmd.Parameters.AddWithValue("@OrderId", orderid);
        using (IDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                qty = Convert.ToInt32(reader["Quantity"]);
                wgt = Convert.ToDecimal(reader["Weight"]);     
                totalWeight = qty * wgt;
            }
            cn.Close();
        }
    }
    return totalWeight;
}

在表(称为OrderItems)中,每个项目都有数量和权重。然而,表中的重量并不是重量*数量的结果(例如,订单编号12345的项目ABC的数量为6,每个ABC项目重1.00磅)。我创建的函数是将每个订单项目的数量乘以重量(即所有6个ABC项目的总重量为6.00磅)

但是,我现在需要取这些总权重值并将它们相加以得到整个订单的总权重。现在,我按顺序返回所有的权重:6.00,5.00,2.80,146.76,6.02,2.25

但我不确定如何将所有这些加在一起?我正在考虑做一个Split(),但随后我会将小数转换为字符串,只是为了将它们转换回小数,以便在"分裂"时将它们加在一起。这看起来太复杂了……有没有更好的办法?

添加SQL查询返回的值以获得总数

这是你要找的吗?

SELECT sum(Weight * Quantity) as TotalWeight
FROM OrderItems
WHERE OrderId = @OrderId;

如果是,这是一个聚合查询的例子,这是一个基本的SQL概念。您应该在数据库中完成这类工作,因为数据库经过优化,可以处理大量数据,并从表中提取这样的结果。

你不应该像这样计算总权重值吗?

因为现在你的totalWeight将只包含最后一项的总权重值