お尋ねしたいことがございます。
アクセス2000で集計をするためにフォームでエクセルのピボットテーブルを使おうと思いますが下記のようなことはどうやったらよいのでしょうか?

--------------------------------------------------
   - バック - その他 - 宝石 - 時計 -合計
--------------------------------------------------
A店 - 1.000 - 2.000  - 3.000 - 4.000- 
--------------------------------------------------
B店 - 2.000 - 3.000  - 4.000 - 5.000 -
--------------------------------------------------

現在このようになっているのですが
これでバック+その他+宝石+時計=合計はでるのですが
バック+時計=合計A
その他+宝石=合計Bもわかるようにしたいのですがどうしたらよろしいでしょうか。
また、並びのことですが現在は
バック-その他-宝石-時計-合計となっておりますが
バック-時計-宝石-その他-合計にしたいのですがそのようなことはできるのでしょうか。宜しくお願いします

理想の表
-------------------------------------------------
・・宝石-その他 - 合計 - 合計A - 合計B
-------------------------------------------------
・・¥ - ¥  - ¥  - ¥   -  ¥
-------------------------------------------------
・・¥ - ¥  - ¥  - ¥   -  ¥
-------------------------------------------------

このQ&Aに関連する最新のQ&A

A 回答 (3件)

御疲れ様です



>どこの画面でSQL文を記述すえばよろしいのでしょうか。
そうですね、普段使うクエリの画面から移行できます。
クエリのデザインビューを表示し、メニューバーの「表示」⇒「SQLビュー」にて表示されます。

例えば、今回下記のようなクエリを作成されたようですが、
>クエリA
>店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日

このクエリをSQLビューで見ると下記のようになります。
SELECT テーブルB.店名, テーブルA.商品番号, テーブルA.販売金額, テーブルC.商品名, テーブルA.詳細, テーブルC.手数料, テーブルA.販売日
FROM (テーブルA LEFT JOIN テーブルB ON テーブルA.販売店番号 = テーブルB.店番) LEFT JOIN テーブルC ON テーブルA.商品番号 = テーブルC.商品番号;

このようにクエリとSQLは同等ということが分かりますね。
特殊なケースで無い限り、SQLビューはほとんど使用することなくてすみます。
(VBAを使用するときは頻繁に御世話になりますが...)


さて、本題の方ですがテーブルの構造が記されていますね、テーブル名が本当かどうか分かりませんが、掲題の内容を元にSQL文を記します。
SELECT テーブルB.店名, テーブルC.商品名,
Sum(IIf([商品名]="宝石",[販売金額],0)) AS 宝石合計,
Sum(IIf([商品名]="その他",[販売金額],0)) AS その他合計,
Sum(テーブルA.販売金額) AS 合計,
Sum(IIf([商品名]="バック",[販売金額],IIf([商品名]="時計",[販売金],0))) AS 合計A,
Sum(IIf([商品名]="その他",[販売金額],IIf([商品名]="宝石",[販売金額],0))) AS 合計B
FROM (テーブルC RIGHT JOIN テーブルA ON テーブルC.商品番号 = テーブルA.商品番号) LEFT JOIN テーブルB ON テーブルA.販売店番号 = テーブルB.店番
GROUP BY テーブルB.店名, テーブルC.商品名;

このSQL文をSQLビューにコピーして下さい。その後、デザインビューに変更してみて下さい。
クエリで作成した場合の様子が分かると思います。


>どこかわかりやすいHPはないでしょうか
目的のものと合致するか分からないですが、参考に...
http://homepage1.nifty.com/tsware/index.htm
    • good
    • 0

こんにちは



テーブルの構造が書いてありません
2パターンを考慮して、回答いたします

「商品」テーブルに
店名 - 商品 - 金額
A店 - 宝石 - 1000
B店 - 時計 - 2000
A店 - 宝石 - 3000
B店 - バック - 4000
・・・
と格納されているとします

で、これらを集計する為に使用するものは、選択クエリ(集計)を使用します
下記にクエリのSQL文を記述します
SELECT 商品.店名,
Sum(IIf([商品名]="宝石",[金額],0)) AS 宝石合計,
Sum(IIf([商品名]="その他",[金額],0)) AS その他合計,
Sum(商品.金額) AS 合計,
Sum(IIf([商品名]="バック",[金額],IIf([商品名]="時計",[金額],0))) AS 合計A,
Sum(IIf([商品名]="その他",[金額],IIf([商品名]="宝石",[金額],0))) AS 合計B
FROM 商品
GROUP BY 商品.店名
ORDER BY 商品.店名;


もう一つのパターンが、
店名 - バック - その他 - 宝石 - 時計 - 合計
A店 - 1.000 - 2.000 - 3.000 - 4.000 - 
B店 - 2.000 - 3.000 - 4.000 - 5.000 -
・・・
と格納されている場合です

こちらの場合は簡単です。選択クエリを使用します
下記にクエリのSQL文を記述します
SELECT 商品TBL.店名, 商品TBL.宝石, 商品TBL.その他, 商品TBL.合計, [バック]+[時計] AS 合計A, [その他]+[宝石] AS 合計B
FROM 商品TBL
ORDER BY 商品TBL.店名;

これで懸念されている「並び」のことも解決できます

アクセスのピボットテーブルは使用せずに集計結果が算出できます
たぶん、SQL文とは何?と思われているかもしれませんが、クエリを勉強していれば必ず通るところです
頑張りましょう

この回答への補足

 *テーブルB    *テーブルA   
  店番←------販売店番号    
  店名       商品番号     
           販売金額    *テーブルC 
           商品番号----→商品番号
           詳細       商品名
           販売日      手数料

リレションシップをしております。
クエリA
店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日


といったクエリをつくりました。
どこの画面でSQL文を記述すえばよろしいのでしょうか。
どこかわかりやすいHPはないでしょうか
お願いします。

補足日時:2002/02/08 20:07
    • good
    • 0

元データは


A店 バック 100
B店 宝石  50
A店 宝石  200
...
となっていると想像して回答します。

私ならこのようなケースの場合、一時的なテーブルを使います。
ご質問にある、結果に相当するテーブルをあらかじめ作成しておき、アクション
クエリや、VBAを使って処理すれば良いと思います。
気をつけなければいけないのは、Null値は足し算できませんので、Nullは"0"に
置き換える等の処理が必要です。

EXCELのピボットを使いたいとのことですが、私にはこの結果を導くのは難しい
と思います。
EXCELを使うのであれば、上記のようにあらかじめ必要となる項目のシートを用意
し、ソートた上で、IFSUM関数を駆使するか、VBAの様な気がします。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

Q【Access抽出方法】 表A-表B=表C は?

Accessを使って2つの表からデータを抽出する方法を
教えてください。

やりたいことは引き算です。
 表A - 表B = 表C

表Aには全取引会社がリストとして入っています。
表Bには得意先の会社だけが入っています。
表Aの中に入っている会社から表Bの得意先以外の
会社だけを表Cとして出したいのですが、
どうするのでしょうか?

実は今、これを手作業で1つ1つ検索削除をやってます。
どなたかお助けください!

Aベストアンサー

テーブルが取引先と得意先
キーが会社CDとすると

SELECT 取引先.*
FROM 取引先 LEFT JOIN 得意先 ON 取引先.CD = 得意先.CD
WHERE (得意先.CD) Is Null;

取引先全レコードと得意先レコードをキーで結びつけて
そのうち得意先レコードがない(null)のレコードを選択する。

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

QSQLiteで「UPDATE table1 SET cnt+=1」のようなことがしたいのですがどう書けばいいですか?

adobe AirにてSQLiteを使っています。

ある値を加算してやりたいのですがmySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。
UPDATE table1 SET cnt+=1
UPDATE table1 SET cnt=cnt+1

どのように書けばいいのでしょうか?
よろしくおねがいします。

Aベストアンサー

SQLの基本的な構文であり、MySQLとは違うといったことはありません。

update 表名 set 列名=列名+1

>mySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。

「だめ」とは、具体的にどうなるのですか?
文法エラー?
更新しているはずなのに、値が変わっていない?

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qb-tree について

形がどのようなもので、利点がなんなのかまったくわかりません


よろしくおねがいします

Aベストアンサー

今朝がた回答した者です。

参考とすべきは、やはりここです。

RDBMSで使われるB木を学ぼう - @IT
http://www.atmarkit.co.jp/fcoding/articles/delphi/05/delphi05a.html

論理的な「形」は上記サイトの絵のとおりです。

積み木の様なピラミッドのような。

物理的な「形」はPCやサーバーのディスクやメモリの中なので、人間に見える物ではありません。

「利点」は今朝も回答したとおり「索引」です。

参考サイトの絵のような木構造があるから、最短な道のりのランダムアクセスで目的のデータを取得できます。

木構造がない場合、シーケンシャルアクセスとなり、ブロックを一個一個見て周る事になり、目的のデータを取得するまでに時間が掛かります。

日常生活に置き換えると。

B-Tree を使ったランダムアクセス

近道を使用して目的地まで100歩。
道もキレイ(メモリに乗っている)なので凄く速く到着。

B-Tree を使わないシーケンシャルアクセス

近道を使わないで目的地まで2000歩。
道は普通の道(ハードディスク)。
凄く時間が掛かる。

今朝がた回答した者です。

参考とすべきは、やはりここです。

RDBMSで使われるB木を学ぼう - @IT
http://www.atmarkit.co.jp/fcoding/articles/delphi/05/delphi05a.html

論理的な「形」は上記サイトの絵のとおりです。

積み木の様なピラミッドのような。

物理的な「形」はPCやサーバーのディスクやメモリの中なので、人間に見える物ではありません。

「利点」は今朝も回答したとおり「索引」です。

参考サイトの絵のような木構造があるから、最短な道のりのランダムアクセスで目的のデータを取得できま...続きを読む

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

Q□-×(=窓を開けたり閉じたりするところ)

アプティバ・IBMウインドウズです。

ネットやエクセルを空けたら必ず右上に出る「□-×」がありますよね?
(最小化・閉じる・・を指定するとこ)

そこんとこが今日イキナリ「02∂」みたいに化けてるんです。
(使用にあたってはちゃんと動いてくれますが気味悪いです)

メールボックスから何から何までです。何度再起動しても直ってません。
前回変わった閉じ方をしたワケでもないんですが・・・。

どなたか直す方法ご存知でしたら教えてください・・・・・・。

Aベストアンサー

下記URLを参照してください。

参考URL:http://homepage2.nifty.com/winfaq/fontstrouble.html

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

QApache+PostgreSQL+phpでWebアプリケーション

こんにちは。
OSはRedhatLinux7.1を使っています。
Apache_1.3.26
PostgreSQL-7.2.1
php-4.2.1
でWebアプリケーションを作ろうとしています。
言語はshift_jisを使いたいと思っているのですが、
データベースに登録したデータを呼び出してWeb上に表示しようとするとeuc_jpで表示されてしまっているようで、文字化けしてしまいます。
データの登録にはwindowsのパソコンからpgaccessを使ってPostgreSQLにアクセスしています。
どのように解決すればいいか教えてください。
お願いします。

Aベストアンサー

こんにちは。

PostgreSQLは、文字コードはeucを使う仕様になっているはずです。(変更できるかどうかは?)
当然呼び出した結果のものもeucで返ってきます。
なので、php中でコンバートするための関数等を使ってshift-jisに変換してから出力すればよいです。


人気Q&Aランキング

おすすめ情報