Mysql 获取起始日期和截止日期内的年度数据

Mysql 获取起始日期和截止日期内的年度数据,mysql,sql,sqlite,Mysql,Sql,Sqlite,我有以下查询,它获取从开始到结束的年份和数据。 它工作得很好 SELECT strftime('%Y',Date), SUM(Amount) from table where (Date between '2008-08-01' and '2012-07-31') GROUP BY strftime('%Y',Date) 我正在条形图上显示总和。 现在,如果我点击相应的年份,它应该显示该年份“截止日期”之前的所有交易,或者如果该值小于“截止日期”,则显示整个年份的交易 例如:在上面的示例

我有以下查询,它获取从开始到结束的年份和数据。
它工作得很好

SELECT strftime('%Y',Date), SUM(Amount) 
from table where  (Date between '2008-08-01' and '2012-07-31') 
GROUP BY strftime('%Y',Date)
我正在条形图上显示总和。
现在,如果我点击相应的年份,它应该显示该年份“截止日期”之前的所有交易,或者如果该值小于“截止日期”,则显示整个年份的交易

例如:在上面的示例中,它显示从日期:2008-08-01到日期:2012-07-31的总和

如果用户点击2012年条形栏栏,则应显示截至2012年7月31日的交易,而不是全年的交易,但如果用户点击2011年,则应显示全年的交易,因为截止日期大于2011年

与2008年相同,它应该显示“2008-08-01”的数据,而不是全年的数据,如果我点击该年的条形栏,它应该显示从该特定日期到年底的交易,而不是全年的交易

下面的查询返回了错误的值

SELECT strftime('%Y',Date) ,* 
from table where (Date between '2011-08-01' and '2012-07-31') 
                 and strftime('%Y',Date)='2012' 
GROUP BY strftime('%Y',Date)
这只返回日期为2012-01-01的一行,而不是2012年至2012-07-31的所有值

基本上我只想在下面的查询中更改年份,其余的应该是相同的。strftime(“%Y”,日期)=“2012”

根据上述要求,我不知道如何修理或如何操作。

请帮我修复它或任何其他选择。提前感谢。

您不需要
分组方式

SELECT strftime('%Y',Date) ,* 
from table where (Date between '2011-08-01' and '2012-07-31') 
                 and strftime('%Y',Date)='2012' 

您不需要
分组依据

SELECT strftime('%Y',Date) ,* 
from table where (Date between '2011-08-01' and '2012-07-31') 
                 and strftime('%Y',Date)='2012' 

如果你想要所有的交易,那么你需要删除
分组依据
如果你想要该期间的交易摘要,你需要在select中使用一个聚合函数。它起作用了。谢谢GarethD。你看过这篇文章吗@bonCodigo谢谢bonCodigo。但是下面的解决方案起作用了。如果你想要所有的交易,那么你需要要删除
分组依据
,如果您想要该期间的交易摘要,您需要在select中使用聚合函数。它起作用了。谢谢GarethD。您看过@bonCodigo感谢bonCodigo的这篇文章了吗。但是下面的解决方案起作用了。很好,当您明确地说
strftime(“%Y”,Date)='2012'
Nice,当您明确表示strftime(“%Y”,Date)=“2012”