Microsoft Access 掲示板

マトリックスのフラグ認識

2 コメント
views
4 フォロー

テーブルにこのようなマトリックスがあります。

社員ID, 項目A, 項目B, ・・・,項目H
AAA    1     0            0
BBB       0     0.5       0
CCC       0      0           0

※1レコード中、どこか箇所の項目に数字が入っているか、0もしくはNull
※1レコード中に、数字があるのは1項目に限る

これを単純に演算フィールドを加え

社員ID, 項目合計, 該当フィールド
AAA  1          項目A
BBB    0.5        項目B
CCC    0

項目合計は、各フィールドを単純加算(Nz関数で変換)することで対応していますが、
項目フィールドをどのように取得したらよいか相談させてください。

piublic function getItemName() as String

これを演算子フィールドにするというアイデアはありますが、
テーブルを総当たりで項目数を取得するのは効率が悪すぎるかなと思っています。

end if

kazu
作成: 2022/12/13 (火) 17:03:14
最終更新: 2022/12/13 (火) 17:44:53
通報 ...
1

テーブル構造が正規化されていないので、データベースで処理するには非効率的になります。まずは、正規化してから処理すべきだと思います。

このままでするなら、演算フィールドの式を下記のようにすることになります。

項目合計: Nz(項目A)+Nz(項目B)+Nz(項目C)+Nz(項目D)+Nz(項目E)+Nz(項目F)+Nz(項目G)+Nz(項目H)

該当フィールド: IIf(Nz(項目A)=0,"","項目A") & IIf(Nz(項目B)=0,"","項目B") & IIf(Nz(項目C)=0,"","項目C") & IIf(Nz(項目D)=0,"","項目F") ・・・以下略 

正規化すれば集計クエリで簡単にかつ高速にご希望の結果が得られます。

2

hatena様

なるほどです。こんなやり方、思いつきませんでした。
ありがとうございます。