私の質問は、以下のテーブル構造にあります。すべてのアイテムを でグループ化しstoreName
、storeId
店舗ごとに各アイテムの合計を表示します。ただ、一部の店舗では販売していない商品もあり、NULL表示になっているものもあります。
- 列の最初の 8 レコードの代わりにEgg&baconを表示し、
NULL
itemName
- 列の 2 番目の 8 の代わりにコークスを表示します。
NULL
itemName
アイテムがいくつあるかわかりません。だからダイナミックです。
pentaho report designerでクロス集計レポートを作成したので、これをやりたいです。正常に動作しますが、適切に表示するにはデータが必要です。したがって、各アイテムには、店舗ごとに 1 つずつ、合計 8 つのレコードが必要です。だから私はそれを店でグループ化することができitemname
ます. そのため、レポートには、それらの店舗で販売されていない商品については - または 0 が表示されます。
私が持っているもの
storeId storeName itemName total
1 storeA egg&bacon 75
2 storeB NULL NULL
3 storeC egg&bacon 30
4 storeD NULL NULL
5 storeE NULL NULL
6 storeF egg&bacon 50
7 storeG NULL NULL
8 storeH NULL NULL
1 storeA coke 105
2 storeB coke 90
3 storeC coke 60
4 storeD NULL NULL
5 storeE coke 20
6 storeF coke 80
7 storeG NULL NULL
8 storeH NULL NULL
私が望むもの (下の表が現実的でない場合は、別の列を作成してグループ化できますが、どうすればよいですか?)
storeId storeName itemName total
1 storeA egg&bacon 75
2 storeB egg&bacon 0
3 storeC egg&bacon 30
4 storeD egg&bacon 0
5 storeE egg&bacon 0
6 storeF egg&bacon 50
7 storeG egg&bacon 0
8 storeH egg&bacon 0
1 storeA coke 105
2 storeB coke 90
3 storeC coke 60
4 storeD NULL 0
5 storeE coke 20
6 storeF coke 80
7 storeG NULL 0
8 storeH NULL 0
これはサンプル SQL ステートメントです。
SELECT storeId , storeName, itemName, total FROM STORE
LEFT OUTER JOIN
(
SELECT storeId, storeName, itemId, total FROM REVENUE_CENTER as RVC
LEFT OUTER JOIN MENU_ITEM_TOTAL as MIT ON STORE.storeId = MIT.storeId
) as subQ ON STORE.storeId = subQ.storeId
LEFT OUTER JOIN MENU_ITEM as MI ON MI.itemId = subQ.itemId
よろしくお願いします。