Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
条件により集計が異なるクエリの記述方法について
投稿日時: 20/08/28 18:55:53
投稿者: silk123

テーブルのあるコード(下記の社員コード)毎ににデータをまとめようとしています。
言葉だけでは上手く説明出来ないので下記例でお尋ねさせていただきます。
求めるクエリの結果は社員コード毎に物件区分別に金額を表示する。ただし同じ社員コードでも家主が異なる時は別レコードとする、というものです。
単純に社員コードでまとめるのに物件区分ごとに選択クエリを作成してそれを一つのクエリ、で済めば良いのですが、家主が異なる時はレコードを分ける、という条件をどの様に記述したら良いか分かりませんので、ご教授下さい。(物件区分は3種類のみです)
 
テーブルの内容
社員コード 物件区分 家主 金額
001     家賃   AAA 50000
001     共益費  AAA  1000
001     駐車場  AAA 10000
002     家賃   BBB 40000
002     共益費  BBB  500
002     駐車場  CCC  5000
003     家賃   DDD 30000
003     駐車場  DDD  1500
 
求めるクエリの結果
社員コード 家主 家賃金額 共益金額 駐車金額
001     AAA  50000   1000  10000
002     BBB  40000    500    0
002     CCC    0     0   5000
003     DDD  30000     0   1500  
 

回答
投稿日時: 20/08/28 20:10:48
投稿者: mayu.

2パターンの SQL をご紹介します。
 

SELECT 社員コード
     , 家主
     , Sum( IIf( 物件区分 = '家賃',   金額, 0 ) ) As 家賃金額
     , Sum( IIf( 物件区分 = '共益費', 金額, 0 ) ) As 共益金額
     , Sum( IIf( 物件区分 = '駐車場', 金額, 0 ) ) As 駐車金額
FROM テーブル名
GROUP BY 社員コード
       , 家主
ORDER BY 社員コード ;

TRANSFORM CCur( Nz( Sum( 金額 ), 0 ) )
SELECT 社員コード
     , 家主
FROM テーブル名
GROUP BY 社員コード
       , 家主
ORDER BY 社員コード
PIVOT Left$( 物件区分, 2 ) & '金額' 
   IN ( '家賃金額', '共益金額', '駐車金額' ) ;

投稿日時: 20/08/31 11:14:04
投稿者: silk123

ご回答いただきまして、ありがとうございました。
大変参考になりました。
実際はテーブルや抽出する条件がたくさんあって苦労しましたが、何とか目的とする結果を得る事ができました。