- PR -

SQL Server2005で、期間指定での集計について

1
投稿者投稿内容
mathar
会議室デビュー日: 2008/05/22
投稿数: 6
投稿日時: 2008-05-22 20:25
初めて投稿します。

[商品テーブル]

ID | 商品名 | 値段 | 仕入れ日

1 | みかん | 50 | 2008/05/10
2 | りんご | 20 | 2008/05/10
1 | みかん | 80 | 2008/05/15
2 | りんご | 30 | 2008/05/15
1 | みかん | 40 | 2008/05/18
2 | りんご | 10 | 2008/05/18
1 | みかん | 90 | 2008/05/19
2 | りんご | 70 | 2008/05/19

上記のようなテーブルがあるとします。

仕入れ日を、2008/5/15〜2008/5/19で指定し、
商品名毎の合計値段を、ID順に取得したいと思っています。

SELECT ID, 商品名, SUM(値段) AS 値段
FROM 商品テーブル
GROUP BY 商品名, ID
ORDER BY ID

で、期間全体の合計値は取得出来るのですが、BETWEENを使って試行錯誤していますがうまくいきません。

どなたかご教授宜しくお願いします。
dodo
ベテラン
会議室デビュー日: 2004/05/12
投稿数: 99
お住まい・勤務地: 東京都渋谷区
投稿日時: 2008-05-23 01:05
SQLServer 2005が手元になかったので、2000でよければどうぞ。

SELECT a.ID, a.商品名, SUM(a.値段) AS 値段
FROM
(select * from 商品 where 仕入れ日 between '2008-05-15' and '2008-05-19') a
GROUP BY a.商品名, a.ID
ORDER BY a.ID
;
ID 商品名 値段
--------------------------
1 みかん 210
2 りんご 110
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2008-05-23 12:27
matharさん
こんにちは。

SELECT ID, 商品名, SUM(値段) AS 値段
FROM 商品テーブル
WHERE 仕入れ日 BETWEEN '2008/5/15' AND '2008/5/19'
GROUP BY 商品名, ID
ORDER BY ID

がうまく行かなかったということでしょうか?
mathar
会議室デビュー日: 2008/05/22
投稿数: 6
投稿日時: 2008-05-23 14:32
dodo さん
よっしー さん

ご返答ありがとうございます。

いろんな方法でやっていたのですが、
パラメータにしていたBETWEENの日付部分に問題があり出来なかった様です。

よっしーさん・dodoさんの両方のやり方で出来ました。

ありがとうございました。
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2008-05-23 15:32
引用:

matharさんの書き込み (2008-05-23 14:32) より:
パラメータにしていたBETWEENの日付部分に問題があり出来なかった様です。


勘ですが、
WHERE 仕入れ日 BETWEEN 2008/5/15 AND 2008/5/19
となっていたとか。
mathar
会議室デビュー日: 2008/05/22
投稿数: 6
投稿日時: 2008-05-23 19:30
引用:

よっしーさんの書き込み (2008-05-23 15:32) より:
勘ですが、
WHERE 仕入れ日 BETWEEN 2008/5/15 AND 2008/5/19
となっていたとか。



パラメータにしていた日付部分のデータ型が、コード記述の途中で文字列型になっていたためでした。
かなり初歩的なミスでしたw
1

スキルアップ/キャリアアップ(JOB@IT)