アイテムグループごとに上位10個のアイテムのリストを生成できるクエリを作成しようとしています。これは、すべてのアイテムがアイテムグループに分割されるスーパーマーケットチェーン用です。例:米、塩など。米にはさまざまなブランドがあり、塩にはさまざまなブランドがあります。
SAP Business Oneテーブル(MS SQL Server 2008)からデータを取得する必要があります
アイテムグループテーブルOITBのサンプル結果
SELECT * FROM OITB
(アイテムグループの最初の2列を表示)
ItmsGrpCod ItmsGrpNam
101 RICE
102 SALT
103 SUGAR
104 FROZEN VEGETABLE
これにより、224件の結果が返されます。
SELECT * FROM OITB
(アイテムの最初の2列を表示)
ItemCode ItemName ItmsGrpCod
2001 A1 GRAIN RICE 101
2001 ASHA BRAND RICE 101
2003 PISHORI RICE 101
2004 B7 GRADE RICE 101
2019 JIM SALT 102
2020 KAYKAY SALT 102
上位10個のアイテムを取得するこのクエリも以下にありますが、アイテムグループコード(フィールドItmsGrpCod)を指定する必要があります
SELECT TOP 100 T0.ItemCode, T0.ItemName, T1.DocDate, T6.Price AS COST,P3.Price AS POS,
((P3.Price-T6.Price)/T6.Price)*100 AS [Markup %], T2.OnHand, SUM(T1.Quantity)
AS Quantity, SUM(T1.LineTotal) AS SALES,T6.Price *SUM(T1.Quantity) AS [Sales
Cost],SUM(T1.LineTotal) - T6.Price *SUM(T1.Quantity) AS [GP Amount],
(SUM(T1.LineTotal) - T6.Price *SUM(T1.Quantity))/(T6.Price *SUM(T1.Quantity))
*100 as [GP %],T3.WhsName FROM OITM T0
INNER JOIN INV1 T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OITW T2 ON T0.ItemCode = T2.ItemCode
INNER JOIN OWHS T3 ON T1.WhsCode = T3.WhsCode
INNER JOIN OINV T4 ON T1.DocEntry = T4.DocEntry
INNER JOIN OITB T5 ON T0.ItmsGrpCod = T5.ItmsGrpCod
INNER JOIN ITM1 T6 ON T0.ItemCode = T6.ItemCode
INNER JOIN (SELECT P1.ItemCode, P2.Price FROM OITM P1
INNER JOIN ITM1 P2 ON P1.ItemCode=P2.ItemCode WHERE
P2.PriceList='1') P3 ON P3.ItemCode=T0.ItemCode WHERE T6.PriceList ='2'
AND T2.WhsCode = '01' AND T1.WhsCode = '01' AND T4.DocDate
= CONVERT(VARCHAR, GETDATE() -1, 101)
AND T0.ItmsGrpCod = '103' --(Item Group Code)
GROUP BY T0.ItemCode, T0.ItmsGrpCod, T0.ItemName, T1.DocDate, T6.Price, P3.Price, ((P3.Price-T6.Price)
/NULLIF(T6.Price, 0))* 100, T2.OnHand, T3.WhsName ORDER BY Quantity DESC
必要なのは、最初にOITBからすべてのアイテムグループコードを取得し、それらを一時的に配列に格納してから、各アイテムグループコードに対して2番目のクエリを実行するクエリです。各アイテムグループに少なくとも10個のアイテムがあるとすると、クエリは2240件の結果を返すはずです。ただし、一部のアイテムグループには10未満のアイテムがあります。私は実際にSQlで配列を使用したことがないので、必要なものを取得するためのクエリをどのように作成しますか?助けていただければ幸いです。