Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1784 / 2272 ツリー ←次へ | 前へ→

【5284】最適なクエリの組み方は にしもり 05/6/6(月) 14:41 質問[未読]
【5289】Re:最適なクエリの組み方は 小僧 05/6/6(月) 16:30 発言[未読]
【5297】Re:最適なクエリの組み方は にしもり 05/6/6(月) 17:27 質問[未読]
【5302】Re:最適なクエリの組み方は 小僧 05/6/6(月) 18:07 回答[未読]
【5303】Re:最適なクエリの組み方は にしもり 05/6/6(月) 18:27 お礼[未読]
【5308】Re:最適なクエリの組み方は 小僧 05/6/7(火) 9:27 回答[未読]

【5284】最適なクエリの組み方は
質問  にしもり  - 05/6/6(月) 14:41 -

引用なし
パスワード
   こんにちは。

また行き詰まってしまいました。
table aに科目大コード、科目小コード、金額というフィールドがあります。
そこに80,00,10000と入っています。
またtable bに科目大コード、科目小コード、金額というフィールドがあります。
そこに1レコード目に80,01,5000、2レコード目に80,02,3000と入っています。
いま、table aにbを(もしくはbにaを)追加クエリし、さらに4レコード目に10000-5000-3000の結果として新たなレコード80,03,2000を表出させたいのです。
できるだけすくない数のクエリでテーブルの中身を希望通りにするにはどうすればよろしいでしょうか?

【5289】Re:最適なクエリの組み方は
発言  小僧  - 05/6/6(月) 16:30 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

色々考える前に確認なのですが…

1) 科目大コードで集計?
  table_A(テーブル名にスペースを入れるのは避けましょう)には
  70,00,10000とかの値が入ることはありえないのでしょうか?
  あった場合は「70」、「80」毎に集計?

2) テーブルに値を代入するのは何のため?
  もしレポートやフォームの為にレコードを作成したいのであれば
  わざわざテーブルに代入しなくても出来そうな気がするのですが…。

【5297】Re:最適なクエリの組み方は
質問  にしもり  - 05/6/6(月) 17:27 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。
>  70,00,10000とかの値が入ることはありえないのでしょうか?
>  あった場合は「70」、「80」毎に集計?
ありえます。
そして「70」「80」・・ごとに処理します。
(合計ではありません。10000-5000-3000=2000のように処理します。)

>  わざわざテーブルに代入しなくても出来そうな気がするのですが…。
わたしは「70」「80」ごとに処理し、それを元のテーブルに追加しています。
そのやりかたがどうもダサイなあと思うので、もっと洗練されたやりかたがないものか知りたいと思っております。いい案がありましたらぜひご教示ください。

【5302】Re:最適なクエリの組み方は
回答  小僧  - 05/6/6(月) 18:07 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

テーブルAに
科目大コード 科目小コード 金額
  80      00     10000
  70      00     15000
  80      01      4000
  80      02      7000
  70      01      3000

のように全てデータが入っていたとして、
下記のSQLをクエリに貼り付けて結果を確かめてください。

SELECT テーブルA.*
FROM テーブルA
UNION ALL SELECT テーブルA.科目大コード,
Format(DMax("科目小コード","テーブルA","科目大コード = " & テーブルA.科目大コード)+1,"00") AS 式1,
Sum(IIf([科目小コード]=0,テーブルA.金額,-テーブルA.金額)) AS 金額
FROM テーブルA
GROUP BY テーブルA.科目大コード,
Format(DMax("科目小コード","テーブルA","科目大コード = " & テーブルA.科目大コード)+1,"00")
ORDER BY テーブルA.科目大コード;

結果の科目小コードがうまく数値型になっていませんが
ちょっと用事がありますので、取り急ぎ投稿しました。
うまくいくようなSQLが組めましたらまた投稿させて頂きます。

【5303】Re:最適なクエリの組み方は
お礼  にしもり  - 05/6/6(月) 18:27 -

引用なし
パスワード
   ▼小僧 さん:

>下記のSQLをクエリに貼り付けて結果を確かめてください。
ユニオンクエリは私には難しいですが使わせていただきます。
どうもありがとうございました。

【5308】Re:最適なクエリの組み方は
回答  小僧  - 05/6/7(火) 9:27 -

引用なし
パスワード
   ▼にしもり さん:
おはようございます。
昨日のSQLの訂正版です。
SQLビューに貼り付けて確かめてください。

SELECT Q.科目大コード, Format([Q].[科目小コード],"00") AS 科目小コード, Q.金額
FROM [
SELECT テーブルA.*
FROM テーブルA
UNION ALL SELECT テーブルA.科目大コード,
Format(DMax("科目小コード","テーブルA","科目大コード = " & テーブルA.科目大コード)+1,"00") AS 式1,
Sum(IIf(テーブルA.科目小コード=0,テーブルA.金額,-テーブルA.金額)) AS 金額
FROM テーブルA
GROUP BY テーブルA.科目大コード,
Format(DMax("科目小コード","テーブルA","科目大コード = " & テーブルA.科目大コード)+1,"00")
]. AS Q
ORDER BY Q.科目大コード, Format([Q].[科目小コード],"00");

1784 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078230
(SS)C-BOARD v3.8 is Free