У вас синтаксическая ошибка, пропущенная запятая (,) после столбца SOLD
в списке выбора, а также перемещение порядка по предложению в конце и предложения where перед Группой следующим образом:
Порядок пунктов должен быть SELECT, WHERE, GROUP BY, Порядок по
protected void btnApply_Click(object sender, EventArgs e)
{
string CS = ConfigurationManager.ConnectionStrings["POS_SystemConnectionString2"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
if (txtDate.Text != null && txtDate2.Text != null)
{
SqlCommand cmd = new SqlCommand("SELECT TOP 3 Sold, COUNT(Sold) AS MOST_FREQUENT FROM Transactions WHERE Dates Between '"+Convert.ToDateTime(txtDate.Text)+"' and '"+Convert.ToDateTime(txtDate2.Text)+"' GROUP BY Sold ORDER BY COUNT(Sold) DESC", con);
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows.Count != 0)
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
else
{
}
}
con.Close();
}
Кроме того, вы должны использовать параметризованные запросы вместо конкатенации значений параметров в строке, чтобы избежать SQL-инъекций.