Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在mssql中使用带where条件的sum()函数?_C#_Asp.net - Fatal编程技术网

C# 如何在mssql中使用带where条件的sum()函数?

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

我正在尝试使用asp.NETC从数据库中获取价格总和

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毫无意义-我们知道向查询传递了什么值,因此可以从输出中删除它。没有它,一组一组地变得过剩。