電子書籍の厳選無料作品が豊富!

access2000で以下のようなテーブルがあります。
日付,商品Aの売上,商品Bの売上
2006/05/01,1000,1200
2006/05/02,1100,1300
2006/05/03, 900,1000
2006/05/04,1000,1000
2006/05/05,1200,1100

このテーブルから以下のようなレポートを作りたいと思っています。
,5/1, 5/2, 5/3, 5/4, 5/5
商品A,1000,1100, 900,1000,1200
商品B,1200,1300,1000,1000,1100

いろいろ考えたのですが、どうしてもうまくいきません。このようなレポートを作るのはむりなのでしょうか。
よろしくお願いします。

A 回答 (4件)

>このようなレポートを作るのはむりなのでしょうか。


無理ではありません。
UNIONクエリを作りUNIONクエリを元にクロス集計クエリで作れます。
例えばそのテーブルをTbl1としてクエリのSQLビューに

SELECT "商品A" as 商品,Tbl1.日付, Tbl1.商品Aの売上
FROM Tbl1
UNION SELECT "商品B" as 商品,Tbl1.日付, Tbl1.商品Bの売上
FROM Tbl1;

(Tbl1は実際のテーブル名にしてください。)
でUNIONクエリを作れます。
このUNIONクエリを元にしてクロス集計クエリをすくれば出来ます。
クエリの新規作成でウィザードを使いクロス集計クエリを選択し作ったUNIONクエリを元にすれば簡単です。
    • good
    • 0
この回答へのお礼

ありがとうございました。できました!
ユニオンクエリは複数テーブルで使うものと思っていましたが、このような使い方もできるのですね。これは便利!いろいろなところで応用できそうです。非常に勉強になりました。
ありがとうございました。

ところで、クロス集計クエリで抽出条件を指定することってできるのでしょうか?

お礼日時:2006/05/12 01:00

>クロス集計クエリで抽出条件を指定することってできるのでしょうか?


PARAMETERSの設定をすれば出来ます。
クロス集計クエリのデザインビューで右クリックするとメニューにパラメータがありますのでそこで設定します。
例えばBetweenを使って抽出日付1と抽出日付2の期間に該当する日付のレコードを抽出したい場合。
日付のフィールドをクロス集計クエリに追加し集計欄をWhere条件にして抽出条件に
Between [抽出日付1] And [抽出日付2]
とします。
パラメータで抽出日付1としデータ型で日付/時刻型に設定します。抽出日付2も同様に設定します。
これでクロス集計クエリを開く際に[抽出日付1]と[抽出日付2]を入力するダイアログが表示されますので日付を入力すればその期間のレコードで抽出されます。
SQLでは
PARAMETERS 抽出日付1 DateTime, 抽出日付2 DateTime;
がクロス集計のTRANSFORMの前に設定されるようになります。
フォームのコントロールの値から抽出する際もパラメータを[Forms]![フォーム名]![抽出日付1]で日付/時刻型に設定すれば使えます。
    • good
    • 0
この回答へのお礼

またまたできました!
ありがとうございます。
パラメータの設定が必要なのですね。気が付きませんでした。本当に勉強になりました。
重ね重ねありがとうございました。

お礼日時:2006/05/12 12:29

テーブルの構造が悪いからうまくいかないのです


テーブルは
日付 商品 売上
の様な形に組変えることをお勧めします

(1)、(2)の回答は今の形の悪いテーブルをユニオンクエリで
扱える形に組変えてから処理するものです

でも今の形のテーブルだと他にも不都合なことが出てきます
やり変えるなら早い方が楽ですよ
(2)の回答のユニオンクエリでできたものをテーブルにすれば
テーブルの組み替えが出来ます

詳しくはヘルプで[テーブル構造][正規化]などを調べてください
    • good
    • 0

レポートの問題というよりもクエリの問題でしょう。


中間に仮のテーブルを経由すればクロス集計クエリでできると考えます。
しかしレポートで日付部分は動的に変化するのでしょうから、その部分はVBAなどで作り込んでやる必要があるでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す