我想要一张 table 和很多 table 。
在我放置 Count(taskid)
之前,它运行良好。
private DataTable GetData() //get any data
{
string connString = @"Data Source=aa.net;Initial Catalog=db_c;Persist Security Info=True;User ID=db_c_ExternalWriter;Password=aa";
string query = "Select a.Name, b.Restaurant, a.City, c.[Postal Code], a.[Open Date], a.POSSystem FROM Stores a, tblConcepts b, tblStates c WHERE a.ConceptID = b.Restaurantid AND a.State = c.Stateid AND a.[Open Date] >= cast(cast(getdate() as date) as datetime";
// string query2 = "SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID";
using (SqlConnection con = new SqlConnection(connString))
{
using (SqlCommand comm = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
comm.Connection = con;
sda.SelectCommand = comm;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
}
但是当我添加 Count(taskid)
时它不起作用。
SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID;
我想添加这些查询,有什么想法吗?
private DataTable GetData() //get any data
{
string connString = @"Data Source=aa.net;Initial Catalog=db_c;Persist Security Info=True;User ID=db_c_ExternalWriter;Password=aa";
string query = "Select a.Name, b.Restaurant, a.City, c.[Postal Code], a.[Open Date], a.POSSystem, d.Count(Taskid) FROM Stores a, tblConcepts b, tblStates c, tblAssignedTasks d WHERE a.ConceptID = b.Restaurantid AND a.State = c.Stateid AND a.[Open Date] >= cast(cast(getdate() as date) as datetime AND b.Restaurantid = d.StoreID AND d.Complete = 'True' GROUP BY d.StoreID)";
// string query2 = "SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID";
using (SqlConnection con = new SqlConnection(connString))
{
using (SqlCommand comm = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
comm.Connection = con;
sda.SelectCommand = comm;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
}
最佳答案
您需要修复查询。
当您使用聚合函数 (Count()
) 时,您必须在 GROUP BY
子句中包含所有字段。
另外,将该行的错误语法更改为 d.Count(Taskid) as 'taskKid'
(并提供别名)到 Count(d.Taskid) as 'taskKid'
另一个修复:a.[Open Date] >= cast(cast(getdate() as date) as datetime
错误更改为 a.[Open Date ] >= getdate()
这应该有效:
SELECT a.Name,
b.Restaurant,
a.City,
c.[Postal Code],
a.[Open Date],
a.POSSystem,
Count(d.Taskid) as 'taskKid'
FROM Stores a,
tblConcepts b,
tblStates c,
tblAssignedTasks d
WHERE a.ConceptID = b.Restaurantid
AND a.State = c.Stateid
AND a.[Open Date] >= getdate()
AND b.Restaurantid = d.StoreID
AND d.Complete = 'True'
GROUP BY a.Name,
b.Restaurant,
a.City,
c.[Postal Code],
a.[Open Date],
a.POSSystem
关于c# - 使用 COUNT 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399315/