- PR -

金額を「顧客番号・年月」毎に集計したい

1
投稿者投稿内容
くぅ
会議室デビュー日: 2005/01/25
投稿数: 2
投稿日時: 2006-02-02 09:53
CHAR型   DATE型   NUMBER型
顧客番号  売上日付  運賃
100     20050801  300     
100     20050805  400
100     20050906  200
100     20050912  300
100     20050925  250
200     20050801  100
200     20050810  300
200     20050901  200
200     20051001  250

上記のようなデータで、「顧客番号・年月」毎に運賃を集計し、
下記のような結果を得たいと考えています。

顧客番号  売上日付  運賃
100     200508   700
100     200509   750
200     200508   400
200     200509   200

日まで入っているデータを見て、年月毎に集計は可能でしょうか?
不足事項等がありましたらご指摘をお願いします。
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2006-02-02 10:45
使用しているDBMSとそのバージョンは明記して下さい。

引用:

下記のような結果を得たいと考えています。

顧客番号  売上日付  運賃
100     200508   700
100     200509   750
200     200508   400
200     200509   200


顧客番号=200の10月度の売上が集計されていませんが、これは誤りでしょうか?
10月度の売上を集計してOKなのであれば、年月でGROUP BYしてあげれば集計可能です。
(Oracle9i[9.2.0.5.0]で確認しました)

コード:
CREATE TABLE TEST(
顧客番号 VARCHAR2(3),
売上日付 DATE,
運賃 NUMBER(3));

INSERT INTO TEST VALUES('100', TO_DATE('2005/08/01', 'YYYY/MM/DD'), 300);
INSERT INTO TEST VALUES('100', TO_DATE('2005/08/05', 'YYYY/MM/DD'), 400);
INSERT INTO TEST VALUES('100', TO_DATE('2005/09/06', 'YYYY/MM/DD'), 200);
INSERT INTO TEST VALUES('100', TO_DATE('2005/09/12', 'YYYY/MM/DD'), 300);
INSERT INTO TEST VALUES('100', TO_DATE('2005/09/25', 'YYYY/MM/DD'), 250);
INSERT INTO TEST VALUES('200', TO_DATE('2005/08/01', 'YYYY/MM/DD'), 100);
INSERT INTO TEST VALUES('200', TO_DATE('2005/08/10', 'YYYY/MM/DD'), 300);
INSERT INTO TEST VALUES('200', TO_DATE('2005/09/01', 'YYYY/MM/DD'), 200);
INSERT INTO TEST VALUES('200', TO_DATE('2005/10/01', 'YYYY/MM/DD'), 250);

SELECT 顧客番号, TO_CHAR(売上日付, 'YYYYMM') AS 売上月, SUM(運賃) AS 合計運賃 FROM TEST
GROUP BY 顧客番号, TO_CHAR(売上日付, 'YYYYMM')

顧客番号 売上月  合計運賃
-------- ------   ---------
100	200508	700
100	200509	750
200	200508	400
200	200509	200
200	200510	250

くぅ
会議室デビュー日: 2005/01/25
投稿数: 2
投稿日時: 2006-02-02 11:08
いーた様

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

データベースはAS400を使っていて、
Excel2000のVBAでSQL文を発行しています。

Set objADOcn = CreateObject("ADODB.Connection")
Set objRst = CreateObject("ADODB.RecordSet")

objADOcn.Mode = adModeRead

objADOcn.Open "Provider=IBMDA400;Data Source=【IPアドレス】;" & _
"User Id=TEST;Password=TEST", "", ""
  
'---SQL文記述

         中略

' SQLの発行
Set objRst = objADOcn.Execute(strSQL)

' 結果の表示
Sheets("Sheet2").Cells(2, 7).CopyFromRecordset objRst

>顧客番号=200の10月度の売上が集計されていませんが、これは誤りでしょうか?
これは取得する年月の範囲をセルから取得し、
下記のようなイメージを考えていました。

DateFrom = 20050801
DateTo = 20050930

"WHERE 売上日付 BETWEEN " & DateFrom & " AND " & DateTo & " " & _

このレスを送信後、いーた様に教えて頂いた方法を試してみます。
1

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