hiroton
2021/03/22 (月) 11:29:18
4c4b9@f966d
例えば次のようなデータ(1ページ=>5行3列)を考えます
Px | 0 | 1 | ||||||
Py | 商品名 | 合計 | A店 | B店 | C店 | D店 | E店 | |
0 | あ | 5 | 1 | 1 | 1 | 1 | 1 | |
い | 1 | 1 | ||||||
う | 2 | 1 | 1 | |||||
え | 3 | 1 | 1 | 1 | ||||
お | 2 | 1 | 1 | |||||
1 | か | 1 | 1 | |||||
き | 1 | 1 | ||||||
く | 2 | 1 | 1 | |||||
け | 2 | 1 | 1 | |||||
こ | 2 | 1 | 1 | |||||
2 | さ | 1 | 1 | |||||
し | 1 | 1 |
「全く値が無いページ」は色を染めた部分で2ページになります。この考え方で合っていますか?
案件では、列も行も固定ではなく出力してみないとわからないという状態で、「ページ単位で見て」合計が0ならページを出力しないということですが、例えば
「商品お」の2ページ目のデータは「D店、E店」でデータはなし→ページ出力あり
「商品か」の2ページ目のデータは「D店、E店」でデータはなし→ページ出力なし
となっていて、レコード単位で出力の有無が決められません。なかなか難しくなってきました
サンプルデータのテーブルにすでに情報を追加していますが、ページ単位で考えるということで、ページの位置情報を追加して出力有無のデータを作ります
Py | Px | データの合計 |
---|---|---|
0 | 0 | 9 |
0 | 1 | 4 |
1 | 0 | 8 |
1 | 1 | 0 |
2 | 0 | 0 |
2 | 1 | 2 |
「データの合計」が「0」なら出力しないページということですね
長くなるのでいったん切ります
通報 ...
続き
現在のレポート出力用のクエリにこの情報を追加してやれば不要なページを出力しないようにできます
「Px(各ページの列のまとまり)」はすでに求めていますね。「Q出力店舗のG」です。Q出力店舗の「G」は「Px」に変更します
「Py」も同様に求められます
Q出力商品リスト
Q出力商品ページグループ
これで、商品ほにゃららの店舗foo店はページ(Py,Px)に出力されるという情報ができました。これを組み合わせてページごとの数量の合計を算出します
Q出力ページリスト
サンプルの場合に実際に得られる結果は
です。合計が「0」は実際には「データがない」なので出力されません。「数量」が「0」で実際に登録されているだとか、マイナス数量が許容されてて合計「0」がありうるとかだとまた変わってくるのでこの方法は使えないかもしれません
必要な情報がそろったのでレポート出力用のクエリを作成します
元データにはページの情報が含まれていないのでワンステップ挟んで最終的なクエリを作成します
Q出力全ページデータ
Qレポート出力データ
これで、ページ単位でデータがないデータは取り除いたデータが取得できます。「G」→「Px」等変更になってるのでレポートのデザインも合わせて修正してください
計算がかなり増えているのでレポート表示にもそれなりに時間がかかりそうな気がします。出力時間が気になる場合は、クエリを細かく分けて作成しているので「ここで遅くなる」等チェックしてみてください