- - PR -
月別集計方法について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-20 10:26
みーちくと申します。
宜しくお願いいたします。 SQLServer8.0において、過去1年分の日付の集計結果を取得したいのですが、 うまくSQLが書けません。下記のSQLの他にうまい方法などありましたら、 ご教授願います。 宜しくお願い致します。
| ||||||||
|
投稿日時: 2005-12-20 10:35
SQLServer8をやったことないですが、
考え方として (1)過去1年分のデータをWhere句で指定して取得する。 取得するデータは年月と、集計したい項目 ( Select 年月、集計対象項目 From テーブル Where 日付 Between 現在日付-1年 and 現在日付 など) (2) (1)で取得したデータを年月でGroup Byし、集計対象項目のSumを取得する。 まとめると こんな感じになると思うんですが・・・。 こんな感じのSQLでやってみてはいかがでしょう?
| ||||||||
|
投稿日時: 2005-12-20 10:46
こんにちは、でっちです。
横並びじゃないといけないんですかね? 縦並びでもよければ、夏椰さんのやり方が簡単ですね。 単純にCount(*)するだけのようですので、Fromの副問合せじゃなくて Whereで指定した方がより簡単だと思いますが。 データ上月の抜けがある可能性はあるが、取得時には0にしたいとか そういった前提があるなら工夫が必要になりますが。 | ||||||||
|
投稿日時: 2005-12-20 11:18
夏椰さん、でっち6号さん
返信ありがとうございます。 私の説明が十分ではなかったのですが、 でっち6号さんのおっしゃる通り、 「データ上月の抜けがある可能性はあるが、取得時には0にしたい」 という条件がありました。 また、対象月(2005/12/20)より、過去1年分のデータを取得したいと 考えております。 私のやり方でも、取得は可能なのですが、SQL文が長くなるだけなので、 うまく取得できないかなと思っております。 また、下記の方法も考えてはみたのですが・・・。
| ||||||||
|
投稿日時: 2005-12-20 11:21
みーちくです。
変なコードが出力されてしまいました。 正確にはこちらのコードです。
| ||||||||
|
投稿日時: 2005-12-20 15:15
勧めていいのかわからないですが・・・
以下のSQLで前年+年月が取得できます。 (MSDE2000で確認したので、SQLServer8で出来るかはわかりません。)
この表を元に対象テーブルをOuter Joinして集計するってどうでしょう? 上記のSQLでは1からの連番がほしかったのでsyscolumnsテーブルのcolidを 使ったのですが、別に業務テーブルなどで 連番を保持しているテーブルがあるのであればその方がいいかと思います。 それ以外の方法となると・・・オレの頭ではがんばって12個書くしか思いつきませんでした。 [ メッセージ編集済み 編集者: 夏椰 編集日時 2005-12-20 15:15 ] | ||||||||
|
投稿日時: 2005-12-20 15:33
夏椰さん
返信ありがとうございました。 私のマシンは、クライアントが入っていないので、 CommonSQLを使用してクエリを作成しています。 システムテーブルの存在をすっかり、忘れておりました。 いろいろなやり方があるのですね。 参考になりました。 ありがとうございました。 | ||||||||
1
