1

次のクエリがあり、fromとto間のyear、Sumデータを取得します。
それは完璧に動作します。

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

合計を棒グラフで表示しています。
それぞれの年をクリックすると、その年の「To Date」までのすべてのトランザクションが表示されます。値が「Todate」よりも小さい場合は、その年のトランザクション全体が表示されます。

例:上記の例では、Sum From Date:2008-08-01およびTo Date:2012-07-31が表示されます。

ユーザーが2012年のバーの列をタップすると、2012年7月31日までのトランザクションが表示され、通年では表示されませんが、2011年をタップすると、TO日付が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の日付に対して1つの行のみが返され、2012-07-31までの2012年のすべての値が返されるわけではありません。

基本的に、次のクエリでは年のみを変更したいと思います。残りは同じである必要があります。strftime('%Y'、Date)= '2012'

私はそれを修正する方法や上記の要件でそれを実行する方法がわかりません。
それまたは他の方法を修正するのを手伝ってください。前もって感謝します。

4

1 に答える 1

1

あなたは必要ありませんGROUP BY

SELECT strftime('%Y',Date) ,* 
from table where (Date between '2011-08-01' and '2012-07-31') 
                 and strftime('%Y',Date)='2012' 
于 2013-01-11T10:45:13.753 に答える