- 締切済み
Access:クエリの集計でグループ化した値を一回だけ表示したい。
Accessクエリで左から2列分をグループ化した時、一番左の列の値が何回も表示されないようにしたいです。具体的には、一番左の列が上から順に朝・朝・朝・昼・昼・昼・夜・夜というふうにグループ化されます。これは左から2列目のフィールドが1・2・3というふうになっていて、朝1・朝2・朝3のレコードがそれぞれ一件ずつ表示されているからだと思いますが、いちばん左の列の朝の表示を先頭の一回だけにしたいです。お願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- hatena1989
- ベストアンサー率87% (378/433)
> クエリ1:(集計) > fld1_fld2_fld3(カウント) > 朝___1 2 > 朝___2 1 > 朝___3 1 > 昼___1 2 > 昼___2 1 > 昼___3 2 > 夜___1 1 > 夜___2 3 > 夜___3 1 この クエリ1 を基にクエリを作成して、下記の演算フィールドを作成します。 fld1: IIf(fld2=1,クエリ1.fld1,"") あとは、fld2, fld3 を表示させてください。 SQLでは、 SELECT IIf(fld2=1,クエリ1.fld1,"") As fld1, fld2, fld3 FROM クエリ1 ORDER BY fld1, fld2; 他の方も言われてますが、データベースとしては意味の無いデータとなりますし、見かけだけのことなら、レポートなら、「重複データ非表示」プロパティで簡単にできます。
クロス集計クエリ(ウィザード)で、fld1を行見出し、fld2を列見出しにして、fld3を集計すれば、すっきりした形で表示できるのではないでしょうか。
出来ますが・・・。 でも、フォームやレポートでは重複データ非表示機能がありますから・・・。 で、どうしてもということなら、 それぞれのグループの最小かどうかを判定して出力データを翻訳することになります。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>いちばん左の列の朝の表示を先頭の一回だけにしたいです。 こういう考え方はExcelの考え方です そもそもデータベースのテーブルにレコードの位置なんてものはありませんから 「先頭」というものが存在しません 入っているものを削除してしまうとそこにはなにも入っていないということになります 朝の2つ目だとか昼の2つ目だとかという情報は消えてしまいますよ
質問の意味がよく理解できません。 そこで、確認します。 tab1: fld1_fld2 昼___1 昼___2 昼___3 朝___1 朝___2 朝___3 夜___1 夜___2 夜___3 クエリ1: fld1_fld2 朝___1 昼___1 昼___2 昼___3 夜___1 夜___2 夜___3 こういうクエリを作成したいということですか? ※この場合、GROUP BY を使う意味がありませんよね。 ※そこが判りません。
お礼
回答ありがとうございます。 以下のように集計したいです。 tab1: fld1_fld2 昼___1 昼___1 夜___2 朝___1 昼___3 昼___2 昼___3 朝___1 夜___2 朝___2 朝___3 夜___1 夜___2 夜___3 クエリ1:(集計) fld1_fld2_fld3(カウント) 朝___1 2 朝___2 1 朝___3 1 昼___1 2 昼___2 1 昼___3 2 夜___1 1 夜___2 3 夜___3 1 この時、一番左の列の表示を一回にしたいということです。(朝一回、昼一回、夜一回)↓のようなイメージです。 朝_1 2 _2 1 _3 1 昼_1 2 _2 1 _3 2 夜___1 1 ___2 3 ___3 1