見出しについてお詫びします。これを簡単に/うまく説明できるかどうかわかりません。テーブル(StockMovements)から実行されるレポートを継承しました。この表には、製品番号、移動タイプ、および数量が含まれています(特に、これら3つが重要な値です)。レポートはProductMasterテーブルを使用しており、製品ごとにグループ化しようとしている製品番号ごとに、移動タイプごとに列があり、一致するすべてのエントリが合計されています。現時点では、次のようなことを行っています。
SELECT PM.ProductNumber,
(SELECT SUM(Quantity) FROM StockMovements WHERE MovementType='StockIn' AND ProductNumber=PM.ProductNumber) AS [StockIn],
(SELECT SUM(Quantity) FROM StockMovements WHERE MovementType='StockOut' AND ProductNumber=PM.ProductNumber) AS [StockOut],
(SELECT SUM(Quantity) FROM StockMovements WHERE MovementType='ClosingStock' AND ProductNumber=PM.ProductNumber) AS [ClosingStock]
FROM ProductMaster AS PM
GROUP BY PM.ProductNumber
StockMovementsは巨大なテーブルであり、ご覧のとおり、すべての製品とすべての移動タイプに対して新しいルックアップを実行しているため、これはシステムを停止させます。ProductNumberでグループ化されたStockMovementsからSELECTを駆動するようにストアドプロシージャを変更しようとしていますが、MovementTypeに基づいて異なる各列の合計値を取得する方法を確認するのに苦労しています。私が欲しいのはこのようなものです:
SELECT ProductNumber,
SUM(Quantity) WHERE MovementType='StockIn',
SUM(Quantity) WHERE MovementType='StockOut',
SUM(Quantity) WHERE MovementType='ClosingStock'
FROM StockMovement
GROUP BY ProductNumber
私はこれ全体を書き直して、最も理にかなっているものは何でもそれを追い払うことをいとわないです、私はそれを行うためのより良い方法を見つけるのに苦労しています(それは簡単だと言ってください、そして私もそれを始めたばかりです長さ)。