Access VBA質問箱 IV

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

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


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

【12494】アクセス ユニオンクエリ?について ぶんぶん 14/4/11(金) 18:19 質問[未読]
【12498】Re:アクセス ユニオンクエリ?について かるびの 14/4/14(月) 0:18 回答[未読]

【12494】アクセス ユニオンクエリ?について
質問  ぶんぶん  - 14/4/11(金) 18:19 -

引用なし
パスワード
   クエリ[4月]                            
該当月    個人番号    氏名      経費    所属部署    基本給    社会保険    
4    123456    山田 花子    ABC    経理部    50000    2000    
4    121314    中村 治夫    GHI    渉外部    70000    3500    
4    789101    鈴木 太郎    DEF    総務部    60000    3000    
クエリ[5月]                            
該当月    個人番号    氏名      経費    所属部署    基本給    社会保険    
5    123456    山田 花子    ABC    経理部    60000    3000    
5    121314    中村 治夫    GHI    渉外部    40000    1000    
5    789101    鈴木 太郎    DEF    総務部    80000    4000    
クエリ[6月]                            
該当月    個人番号    氏名      経費    所属部署    基本給    社会保険    
6    123456    山田 花子    ABC    経理部    60000    3000    
6    121314    中村 治夫    GHI    渉外部    90000    5000    
6    789101    鈴木 太郎    DEF    総務部    80000    4000    
                            
・・・    12ヶ月分クエリ有り                        
                            
最終的に「個人番号」毎12ヶ月「経費」毎「所属」毎で積上データを抽出したい                            
ユニオンクエリ ?等参考に入力すべきSQL?等もお教えいただきたいのですが。                            
どうぞよろしくお願いいたします。                            
                            
以下のようなクエリやレポートを完成させたいです。                            
                            
経費        部署                    
ABC        経理部                    
個人番号    氏名            4月    5月   6月    ・・・・    
123456    山田 花子    基本給    50000    60000    60000        
            社会保険    2000    3000    3000        
                            
経費        部署                    
GHI        渉外部                    
個人番号    氏名            4月   5月       6月    ・・・・    
121314    中村 治夫    基本給    50000    60000    60000        
            社会保険    2000    3000    3000        
                            
経費        部署                    
DEF        総務部                    
個人番号    氏名            4月    5月     6月    ・・・・    
789101    鈴木 太郎    基本給    60000    80000    80000        
            社会保険    3000    4000    4000

【12498】Re:アクセス ユニオンクエリ?について
回答  かるびの  - 14/4/14(月) 0:18 -

引用なし
パスワード
    クロス集計クエリを使うことになります。
ただ、私は、クロス集計クエリをそれほど使ったことがなく、
またレポートもそれほど得意ではありません。
なので、私にもよくわからないというのが正直なところです。

 私にわかる範囲で述べます。

 クロス集計クエリのベースとなるクエリですが、
次のフィールドを持つものである必要があると思います。
   月  
   個人番号
   種類    (基本給か社会保険かが格納される)
   人別種類  (例えば、「121314社会保険」などというデータ。
          個人番号と、基本給か社会保険かということを
          単純につなげただけのもの)
   金額    (基本給額と社会保険料額が格納される)

 例示されたクエリからクロス集計クエリのベースとなるクエリを作るとすると、
次のようなSQL文になります。
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "基本給" AS 人別種類
    ,基本給 AS 金額
 FROM [4月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "社会保険" AS 人別種類
    ,社会保険 AS 金額
 FROM [4月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "基本給" AS 人別種類
    ,基本給 AS 金額
 FROM [5月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "社会保険" AS 人別種類
    ,社会保険 AS 金額
 FROM [5月]
 ・・・・・・・・

 SQL文はうんざりするほど長いものとなりますね。
 SQL文の長さには制限があるので、
ひょっとしたらそれにひっかかってしまうかもしれません。

 それから、クエリ名が「4月」というのは、よくないですね。
 数字で始まるオブジェクト名は御法度です。

 無理にユニオンクエリを作るよりも、
「4月」クエリの元になったテーブルがきちんと作られたものであれば、
そのテーブルからクロス集計クエリを作った方がいいです。

 きちんと作られているとは、
月別にテーブルを作るなどということは
データベースではやってはいけないことの代表例ですから、
そのようなテーブルではないということです。

 部署と氏名は、
個人番号が決まれば、部署も氏名も決まるという性質のものなので、
クロス集計クエリに含ませる必要はありません。
クロス集計クエリを作った後、
そのクロス集計クエリと、部署や氏名が格納されたテーブルとを結合させた
選択クエリを作ることになると思います。

 経費の扱いがよくわかりませんね。
 人が決まれば、どの経費に該るのかが決まるという性質なのであれば、
経費は部署や氏名と同様に扱えばいいです。
 これに対し、人が決まっても、どの経費に該るのかは決まらない、
例えば、山田さんの場合に、
経費がABCであることもDEFであることもあるということであれば、
上記の「人別種類」フィールドの値を、
個人番号と基本給か社会保険かと経費とをつなげたものとする
(例えば、「121314社会保険GHI」)必要が出てきそうです。
 
 クロス集計クエリは、次のようなものとなります
(ただい、経費の扱いについては前者だとします。)。
   個人番号 種類   人別種類     4月  5月  6月
   123456  基本給  123456基本給   50000 60000 60000
   123456  社会保険 123456社会保険   2000  3000  3000
   121314  基本給  121314基本給   50000 60000 60000  
   121314  社会保険 121314社会保険   2000  3000  3000
   789101  基本給  789101基本給   60000 80000 80000
   789101  社会保険 789101社会保険   3000  4000  4000

 このクロス集計クエリと、部署、氏名、経費などの情報をもったテーブルとを
結合させて選択クエリを作り、
この選択クエリをレコードソースとするレポートを作ります。
 レポートでは、適宜グループを設定した上で、レイアウトを工夫することになると思います。

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