C# 如何在mssql中使用带where条件的sum()函数?
我正在尝试使用asp.NETC从数据库中获取价格总和C# 如何在mssql中使用带where条件的sum()函数?,c#,asp.net,C#,Asp.net,我正在尝试使用asp.NETC从数据库中获取价格总和 SqlConnection conn = new SqlConnection(DecryptString(System.Configuration.ConfigurationManager.AppSettings["cn"], EncryptionKey2)); conn.Open(); SqlDataAdapter sda = new SqlDataAdapter("SELECT SUM(itemrate) from dar
SqlConnection conn = new SqlConnection(DecryptString(System.Configuration.ConfigurationManager.AppSettings["cn"], EncryptionKey2));
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT SUM(itemrate) from darkwight_cart", conn);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@foodname", "Pizza");
conn.Close();
DataTable dt = new DataTable();
sda.Fill(dt);
subtotallbl.Text = dt.Rows[0][0].ToString();
conn.Dispose();
此代码工作正常,但如果我添加WHERE条件,则此代码不工作。我的代码如下
SqlConnection conn = new SqlConnection(DecryptString(System.Configuration.ConfigurationManager.AppSettings["cn"], EncryptionKey2));
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT foodname,itemrate (select SUM(itemrate) from darkwight_cart where foodname=@foodname)", conn);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@foodname", "Pizza");
conn.Close();
DataTable dt = new DataTable();
sda.Fill(dt);
subtotallbl.Text = dt.Rows[0][0].ToString();
conn.Dispose();
您的查询结构不好。请参阅下面的代码
SqlConnection conn = new
SqlConnection(DecryptString
(System.Configuration.ConfigurationManager.AppSettings["cn"], EncryptionKey2));
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT foodname,itemrate,
SUM(itemrate)[Sum] from darkwight_cart where foodname=@foodname group by
foodname)", conn);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@foodname", "Pizza");
conn.Close();
DataTable dt = new DataTable();
sda.Fill(dt);
subtotallbl.Text = dt.Rows[0][0].ToString();
conn.Dispose();
SQL语句:
选择foodname、itemrate、,
如果您只需要一个foodname的总和,请使用darkwight_cart中的SUMitemrate[Sum],其中foodname=@foodname
SqlDataAdapter sda = new SqlDataAdapter("SELECT foodname, SUM(itemrate) itemrate
from darkwight_cart where foodname=@foodname group by foodname", conn);
对于作为参数传输到查询中的一个单独的foodname:
SELECT SUM(itemrate) AS sum_itemrate
FROM darkwight_cart
WHERE foodname=@foodname
对于所有foodnames,然后在客户端上选择单独的值:
SELECT foodname, SUM(itemrate) AS sum_itemrate
FROM darkwight_cart
GROUP BY foodname
代码不起作用对我们没有帮助。为什么不起作用?你有错误吗?错误是什么?您希望得到什么样的输出?第二条SQL语句根本没有意义。foodname的价值来自哪里;外部查询中没有FROM。此代码返回[sum 0]。但是如果没有where条件,这段代码运行良好。您将获得类似于字段不在GROUP BY或AGGRATE函数中的内容…谢谢,是的,它将显示一个错误。我已经更新了回答同样的错误。itemrate字段将导致它。从darkwight_cart中选择foodname、itemrate、SUMitemrate[Sum],其中foodname=@foodname group by foodname我认为您需要group by子句选择foodname毫无意义-我们知道向查询传递了什么值,因此可以从输出中删除它。没有它,一组一组地变得过剩。