【问题标题】:get data for the year within from and to dates获取 from 和 to 日期内的年份数据
【发布时间】:2012-12-25 21:55:03
【问题描述】:

我有以下查询,它获取年份,从和到日期之间的总和数据。
效果很好。

SELECT strftime('%Y',Date), SUM(Amount) 
from table where  (Date between '2008-08-01' and '2012-07-31') 
GROUP BY strftime('%Y',Date)

我在条形图上显示总和。
现在,如果我单击相应的年份,它应该显示该年“迄今为止”的所有交易,或者如果该值小于“迄今为止”,则显示全年的交易。

例如:在上面的示例中,它显示 Sum From Date : 2008-08-01 和 To Date: 2012-07-31 。

如果用户点击 2012 年栏,它应该显示截至日期 2012-07-31 的交易,而不是全年,但如果用户点击 2011,它应该显示全年交易,因为 TO Date 是大于 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',Date)='2012'

我不知道如何解决它或如何解决上述要求。
请帮我修复它或任何替代方案。提前致谢。

【问题讨论】:

  • 如果您想要所有交易,那么您需要删除GROUP BY,如果您想要该时期的交易摘要,您需要在选择中使用聚合函数。
  • 成功了。谢谢 GarethD。
  • @bonCodigo 谢谢 bonCodigo。但下面的解决方案奏效了。

标签: mysql sql sqlite


【解决方案1】:

你不需要GROUP BY

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

【讨论】:

  • 很好,当你明确说strftime('%Y',Date)='2012'
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多