这与Winforms/C#/ MYSQL相关。我有下表:
净额/日期
50 /2013-3/15
40/ 2013-11/10
30 /2013-3/25
该程序让用户选择他想要查看数据的月份,理想情况下,输出应该是一个图表(我知道怎么做),以演示总净额与月份。输出应如下所示:
净额/月
80/三月
40/11月
有人建议我试试这个:
var selectdataforGraph = "SELECT SUM(AMOUNT_NET) AS Amount_Net, MONTH(date_Check) as Month FROM testingproject.incomeinformation WHERE";
var monthList = string.Join(",", selectedMonth);
selectdataforGraph += " YEAR(date_check) = " + selected_year;
selectdataforGraph += " AND MONTH(date_check) in (" + monthList + ")";但是当我在数据库中运行查询时
SELECT SUM(Amount_Net) AS Amount_Net, Month(date_check) AS Selected_Month FROM testingproject.incomeinformation WHERE YEAR(date_check) AND MONTH(date_check) in (1,11);结果是两个月的Amount_Net总和,如下所示:
金额_净额/选定_月
120/11
我确实尝试使用已计算的每月净金额创建另一个表,但由于在某些情况下我需要选择多个月,因此它包含月份的列是一个varchar,上面查询的一部分中的月份不起作用。我也可以使用date列重新设计新的表,但我觉得我离第一个响应已经很近了。我还知道我应该使用参数来避免sql注入,但这更多的是为了快速演示问题。
发布于 2013-07-19 21:47:20
您需要在where子句后面的SQL语句中添加一个group by。否则,MySQL只会将所有内容聚合到一行中,并选择任意月份:
该行的语法为:
group by MONTH(date_Check), year(date_check)我还建议您将年份包含在select中。
您的声明将是:
var selectdataforGraph = "SELECT SUM(AMOUNT_NET) AS Amount_Net, MONTH(date_Check) as Month, year(date_check) as Year FROM testingproject.incomeinformation WHERE";
var monthList = string.Join(",", selectedMonth);
selectdataforGraph += " YEAR(date_check) = " + selected_year;
selectdataforGraph += " AND MONTH(date_check) in (" + monthList + ")";
selectdataforGraph += " group by MONTH(date_Check), year(date_check)";https://stackoverflow.com/questions/17747676
复制相似问题