2017年08月30日
グループ化したくない!【Access】
■Accessでの集計
■グループ化したくない項目がある!
■解1 フィールドの構成を再確認する
■解2 Where条件を使う
グループ化を解除したいという質問を受けたので、まとめてみました。
■Accessでの集計
集計を行うと、データの合計や平均を求めることができます。
グループごとに集計することもできます。
SQLでいうところの集計関数とGROUP BYですね。
Accessでの集計はクエリツールの「集計」から行うことができます。
![a8_105.jpg](/mi9999/file/a8_105.jpg)
金額を合計する集計をしたいときは、金額の集計を「合計」にします。
![a8_106.jpg](/mi9999/file/a8_106.jpg)
■グループ化したくない項目がある!
今回の例では、分類名だけでグループ化したい!
と思っても、ほかの項目にまでグループ化がついてしまいます。
この場合、分類コード、分類名、受注日のすべての組み合わせで
グループ分けされるので、結局
分類名は同じでも受注日が違うと別のグループになってしまいます。
(ここでは分類コードと分類名は一対一)
表示をSQLビューに変えてみるとみごとに
GROUP BY Q受注リスト.分類コード, Q受注リスト.分類名, Q受注リスト.受注日;
となってしまっていて、受注日までグループ化していることになります。
![a8_104.jpg](/mi9999/file/a8_104.jpg)
そのため、出力は結局、同じ分類名でも受注日が異なれば別々に集計されます。
![a8_107.jpg](/mi9999/file/a8_107.jpg)
というわけで、受注日のグループ化を解除したい!!と思うのですが
これが、すんなりできないのです・・・!
![a8_108.jpg](/mi9999/file/a8_108.jpg)
このプルダウンリストでは、「なにも選ばない」ということができないのです・・・!
■解1 フィールドの構成を再確認する
まずはコレです!
受注日は必要ないのだからデザイングリッド(画面の下)にフィールドを置かないことです。
本当にそのフィールドを配置する必要があるのか、もう一度考えてみましょう。
受注日ごとに集計したいわけではない すなわち受注日は出力したくないので
そもそも必要がないわけですね。
デザイングリッドに配置しなければ、もちろんグループ化されません。
■解2 Where条件を使う
どうしてもデザイングリッドに配置したいときもあるかもしれません。
そんなときも大丈夫です。
マイクロソフトのページ「クエリでグループ化しての集計の設定方法」
の一番下にはこんな記載があります。
Where条件
グループ化に使用しないフィールドに対して抽出条件を指定します。
フィールドに、このオプションを指定すると、[表示]行のチェツクボックスがオフになり、フィールドはクエリの結果に表示されません
となっています。
よって、ここで
「Where条件」を選択し
「抽出条件」は空白のまま
にしてあげれば、グループ化をしないことになります!
もちろん、表示はオフになるので結果にも出力されません。
![a8_109.jpg](/mi9999/file/a8_109.jpg)
そして、SQLビューはこのようになります。
![a8_110.jpg](/mi9999/file/a8_110.jpg)
きちんとGROUP BYから消えています。
■まとめ
Accessでは集計したいフィールド以外はすべてグループ化される
グループ化されたくないならフィールドを外す
フィールドを外したくないならWhere条件を選ぶ 条件は空白
よく考えたら、グループ化していないバラバラの値を同じ行に出すのは
そもそも無理だよね
って気づくと納得です
■グループ化したくない項目がある!
■解1 フィールドの構成を再確認する
■解2 Where条件を使う
グループ化を解除したいという質問を受けたので、まとめてみました。
■Accessでの集計
集計を行うと、データの合計や平均を求めることができます。
グループごとに集計することもできます。
SQLでいうところの集計関数とGROUP BYですね。
Accessでの集計はクエリツールの「集計」から行うことができます。
![a8_105.jpg](/mi9999/file/a8_105.jpg)
金額を合計する集計をしたいときは、金額の集計を「合計」にします。
![a8_106.jpg](/mi9999/file/a8_106.jpg)
■グループ化したくない項目がある!
今回の例では、分類名だけでグループ化したい!
と思っても、ほかの項目にまでグループ化がついてしまいます。
この場合、分類コード、分類名、受注日のすべての組み合わせで
グループ分けされるので、結局
分類名は同じでも受注日が違うと別のグループになってしまいます。
(ここでは分類コードと分類名は一対一)
表示をSQLビューに変えてみるとみごとに
GROUP BY Q受注リスト.分類コード, Q受注リスト.分類名, Q受注リスト.受注日;
となってしまっていて、受注日までグループ化していることになります。
![a8_104.jpg](/mi9999/file/a8_104.jpg)
そのため、出力は結局、同じ分類名でも受注日が異なれば別々に集計されます。
![a8_107.jpg](/mi9999/file/a8_107.jpg)
というわけで、受注日のグループ化を解除したい!!と思うのですが
これが、すんなりできないのです・・・!
![a8_108.jpg](/mi9999/file/a8_108.jpg)
このプルダウンリストでは、「なにも選ばない」ということができないのです・・・!
■解1 フィールドの構成を再確認する
まずはコレです!
受注日は必要ないのだからデザイングリッド(画面の下)にフィールドを置かないことです。
本当にそのフィールドを配置する必要があるのか、もう一度考えてみましょう。
受注日ごとに集計したいわけではない すなわち受注日は出力したくないので
そもそも必要がないわけですね。
デザイングリッドに配置しなければ、もちろんグループ化されません。
■解2 Where条件を使う
どうしてもデザイングリッドに配置したいときもあるかもしれません。
そんなときも大丈夫です。
マイクロソフトのページ「クエリでグループ化しての集計の設定方法」
の一番下にはこんな記載があります。
Where条件
グループ化に使用しないフィールドに対して抽出条件を指定します。
フィールドに、このオプションを指定すると、[表示]行のチェツクボックスがオフになり、フィールドはクエリの結果に表示されません
となっています。
よって、ここで
「Where条件」を選択し
「抽出条件」は空白のまま
にしてあげれば、グループ化をしないことになります!
もちろん、表示はオフになるので結果にも出力されません。
![a8_109.jpg](/mi9999/file/a8_109.jpg)
そして、SQLビューはこのようになります。
![a8_110.jpg](/mi9999/file/a8_110.jpg)
きちんとGROUP BYから消えています。
■まとめ
Accessでは集計したいフィールド以外はすべてグループ化される
グループ化されたくないならフィールドを外す
フィールドを外したくないならWhere条件を選ぶ 条件は空白
よく考えたら、グループ化していないバラバラの値を同じ行に出すのは
そもそも無理だよね
って気づくと納得です
この記事へのトラックバックURL
https://fanblogs.jp/tb/6645689
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック