- - PR -
SQLで月別集計のやり方。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-28 10:28
現在仕事で月別の集計表をASP.NET + C#で実現させたいのですが、
月別に集計させるSQLが思いつきません。 環境は SQLServer2005 VS2005 やりたい事は 部門別にその年度の月別金額を集計です。 検索年度を入力してその対象年度の各月の金額を集計したいのです。 (本当は4月〜3月まであります) 年度2006年度 部門コード|部門名|4月|5月|6月|7月|8月|9月|合計 10 部門10 100 50 0 0 200 0 350 11 部門11 200 300 400 0 0 0 900 合計 300 350 400 0 200 0 1250 とこんな感じで出力させたいです。 DBでのデータの持ち方は 部門コード|売上年月日|金額| 10 20060301 100 10 20060402 50 10 20060405 50 11 20060405 200 10 20060520 50 という感じで持っています。 Group byに売上年月日を入れないとなのですが、 それを入れてしまうと月が変わると別レコードで取得されていまいます。 また年月日を入れないで部門コードだけでGroup byすると今度は月別ではなく同一部門であれば月に関係なく全てが加算されてしまいます。 自分も含めてSQLに強いメンバーがおらずここで足踏み状態です。 何かよい知恵がありましたら教えて下さい。 | ||||
|
投稿日時: 2007-03-28 10:50
別レコードになったら何がいけないの? | ||||
|
投稿日時: 2007-03-28 11:00
データ型が不明ですが、売上年月日が文字だとすると、例えば以下のようなSQLが考えられます。
実機確認はしておらず、性能を重視した記述ではないので、その点は注意してください。 | ||||
|
投稿日時: 2007-03-28 11:19
失礼。SQL Serverは、substrでなくsubstringでした。
またselectの選択列の並びで、カンマが抜けていたので訂正します。
| ||||
|
投稿日時: 2007-03-28 20:34
>>さるさん
部門毎に各月で集計をかけ、それを1行で表示をさせたいので 月が変わると別レコードで取れてしまうとプログラムで部門別に集計をかけないといけなくなってしまうので、SQLで1レコードとしてとれた方が処理スピードとしても一番BESTな方法かなと思いましたので、このようなやり方で取りたいのです。 >>忠犬さん 出来ました。 ありがとうございました。 |
1