我需要在c#中运行SELECT
语句和ORDER BY COUNT()
。
SELECT
在SQL Server中工作得很好,但在我的c# Windows窗体应用程序中不工作。
这是点击按钮时使用的代码:
private void button2_Click(object sender, EventArgs e)
{
string sql = @" SELECT COUNT(lab_results.testid) as 'Test Count' , labtests.TestName
FROM LabTests , lab_results
WHERE labtests.testid = lab_results.testid
AND lab_results.approved_date IS NOT NULL ");
string condition = "";
string groupby = "GROUP BY labtests.testname";
string orderby = "ORDER BY COUNT(lab_results.testid) DESC";
DateTime fromDate;
DateTime toDate;
if (!DateTime.TryParse(dtFromDate.Value.ToString(), out fromDate))
{
System.Windows.Forms.MessageBox.Show("Invalid From Date");
}
else if (!DateTime.TryParse(dtToDate.Value.ToString(), out toDate))
{
System.Windows.Forms.MessageBox.Show("Invalid to Date");
}
else
{
condition += " and cast(lab_results.approved_date as date) between '" + fromDate + "' and '" + toDate + "'";
}
DataTable dt = data.fireDatatable(string.Format(sql + condition + groupby + orderby));
OrdersDataGridView.DataSource = dt;
OrdersDataGridView.Refresh();
}
没有顺序的代码工作,但有顺序没有输出,在SQL Server的SELECT
是工作
order by
的错误是什么?我需要你的帮助。
谢谢大家,我收到了你们的评论,现在我把旧样式的join改为新样式,使用INNER JOIN
并解决了这个问题,这就是解决方案:
private void button2_Click(object sender, EventArgs e)
{
string sql = @" SELECT COUNT(lab_results.testid) as 'Test Count' , labtests.TestName
FROM lab_results
inner join labtests on lab_results.testid = labtests.testid
where lab_results.approved_date IS NOT NULL ");
string condition = "";
string groupby = " GROUP BY labtests.testname";
string orderby = " ORDER BY COUNT(lab_results.testid) DESC";
DateTime fromDate;
DateTime toDate;
if (!DateTime.TryParse(dtFromDate.Value.ToString(), out fromDate))
{
System.Windows.Forms.MessageBox.Show("Invalid From Date");
}
else if (!DateTime.TryParse(dtToDate.Value.ToString(), out toDate))
{
System.Windows.Forms.MessageBox.Show("Invalid to Date");
}
else
{
condition += " and cast(lab_results.approved_date as date) between '" + fromDate + "' and '" + toDate + "'";
}
DataTable dt = data.fireDatatable(string.Format(sql + condition + groupby + orderby));
OrdersDataGridView.DataSource = dt;
OrdersDataGridView.Refresh();
}
下周我也将尝试其他解决方案,并使用参数和发布其他方式。