首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql从动态选择的两个独立日期中选择数据

mysql从动态选择的两个独立日期中选择数据
EN

Stack Overflow用户
提问于 2013-07-19 21:44:55
回答 1查看 82关注 0票数 0

这与Winforms/C#/ MYSQL相关。我有下表:

净额/日期

50 /2013-3/15

40/ 2013-11/10

30 /2013-3/25

该程序让用户选择他想要查看数据的月份,理想情况下,输出应该是一个图表(我知道怎么做),以演示总净额与月份。输出应如下所示:

净额/月

80/三月

40/11月

有人建议我试试这个:

代码语言:javascript
复制
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 + ")";

但是当我在数据库中运行查询时

代码语言:javascript
复制
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注入,但这更多的是为了快速演示问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 21:47:20

您需要在where子句后面的SQL语句中添加一个group by。否则,MySQL只会将所有内容聚合到一行中,并选择任意月份:

该行的语法为:

代码语言:javascript
复制
group by MONTH(date_Check), year(date_check)

我还建议您将年份包含在select中。

您的声明将是:

代码语言:javascript
复制
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)";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17747676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档