0

このテーブルが与えられたので、年初来の概要を月ごとに生成する必要があります。結果には、その年の月ごとに 1 つの行と、その月までの年間の合計が含まれているはずです。SQLに関しては決して初心者ではありませんが、純粋なSQLでこれを達成する方法はまだわかりません。誰もこれを行う方法を知っていますか? Microsoft Access SQL と互換性がある必要があることに注意してください。

projectTitle  | completionDate | amount
---------------------------------------
'Project #1'  | 2013-01-12     | 1234
'Project #2'  | 2013-01-25     | 4567
'Project #3'  | 2013-02-08     | 8901
'Project #4'  | 2013-02-15     | 2345
'Project #5'  | 2013-02-20     | 6789
'Project #6'  | 2013-03-01     | 1234
'Project #7'  | 2013-04-12     | 5678
'Project #8'  | 2013-05-06     | 9012
'Project #9'  | 2013-05-20     | 3456
'Project #10' | 2013-06-18     | 7890
'Project #11' | 2013-08-10     | 1234

期待される結果の例

month    | amount
-----------------
'Jan-13' | 5801          -- = Project #1 + Project #2 + Project #3
'Feb-13' | 23836         -- = Project #1 + Project #2 + Project #3 + Project #4 + Project #5
'Mar-13' | 25070         -- ...and so on
'Apr-13' | 30748         
'May-13' | 43216         
'Jun-13' | 51106
'Jul-13' | 51106          
'Aug-13' | 52340

この出力例では、例のテーブルに 7 月のデータが含まれていなくても、7 月が含まれていることに気付くかもしれません。理想的には、出力例に示されているように 7 月が出力に含まれるのが理想的ですが、必要に応じて 7 月がなくてもかまいません。

4

3 に答える 3

1

サブクエリを使用し、テーブル名のエイリアスを使用して答えを見つけました。

SELECT FORMAT(t1.completionDate,"mmm-yy") AS [month], (
        SELECT SUM(t2.amount)
        FROM projects AS t2
        WHERE MONTH(t2.completionDate) <= MONTH(t1.completionDate)
    ) AS [amount]
FROM projects AS t1;
于 2013-06-10T15:13:50.393 に答える
0

月ごとにグループ化すると役立つと思います。月ごとにグループ化する方法については、こちらをご覧ください。次に、月ごとに与える金額を合計できるはずです。

このアイデアがお役に立てば幸いです。

サラジョグ

于 2013-06-10T13:55:25.420 に答える
0
Select Month(CompletionDate) as MthComplete, Year(CompletionDate) as YrComplete, AMT as Sum(Amount)
From MyTable
Group By Year(CompletionDate), Month(CompletionDate)
Order By Year(CompletionDate), Month(CompletionDate)

出力例で使用している年/月形式を取得するには、おそらく別の列を使用する必要がありますが、これにより、データが必要な方法でグループ化されます。

于 2013-06-10T14:21:06.980 に答える