0

私はこの論文プロジェクトを持っており、データベースを年次および月次にグループ化する必要があります

これはフィールドとデータのサンプルです

テーブル名: tblsell

Date_Saved | Total Price

2-5-2013        5
2-5-2013        10
2-5-2013        5
2-6-2013        6
2-7-2013        3
2-8-2013        2
3-1-2013        6
3-2-2013        11
3-3-2013        2
3-5-2014        5
3-6-2014        4

今、私は2つのボタンを作成して、毎月のボタンをクリックするとこれがdatagridviewに表示されるようにすることを計画しています

Date_saved | Total_Earnings

2-2013 or february 2013       31
3-2013 or march 2013          19
3-2014 or march 2014          9

次に、年次ボタンをクリックすると、これが datagridview に表示されます

Date_saved | Total_earnings

2013        50
2014        9

正しい出力を述べているかどうかはわかりませんが、少なくともその出力の近くでそれを行う必要があります。

date_saved のデータ型はテキストで、total_earnings はアクセス数です。datestring を使用して date_saved を取得します。のように.add... = datestring。正しいかどうかわからないので、日付を取得できます。

私はレポートビューアーでそれらを試していますが、レポートビューアーで何をすべきかわからないので、あきらめて、データグリッドビューとボタンの方が簡単だと思いました。

4

1 に答える 1

2

これをデータグリッドとして使用する場合は、これらが2つのクエリオプションです。

ベーステーブルTable1をこのように設定します

ここに画像の説明を入力してください

このような新しいクエリを作成できます ここに画像の説明を入力してください

これはこのコードを生成します。

SELECT MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]) AS [Year], Sum(Table1.[Total Price]) AS [SumOfTotal Price]
FROM Table1
GROUP BY MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]);

そして、これらの結果を生成します。

ここに画像の説明を入力してください

ここで重要なのはグループ化です。グループ化する方法はいくつかありますが、私が行った方法では、データグリッドは「フォーマット済み」に見えますが、次のような方法よりも低速です。

SELECT  DATEADD('m', DATEDIFF('m',0,date_saved), 0) as [Month], sum([total price]) as [Month's Total Price]
FROM Table1
group by DATEADD('m', DATEDIFF('m',0,date_saved), 0)

これは機能的には同等ですが、データ型の変換を行わないため、実行速度が速くなります。さらに、レポートのテキストボックスで日付をフォーマットできるという追加の利点がありますが、クエリ時間を決定することはできません。欠点は、dateadd/メソッドが、、、関数を使用する場合にdatediff比べて少し鈍いことです。monthmonthnameyear

于 2013-02-15T00:59:57.643 に答える