私は約 2 週間、私が働いている会社の詳細なレポート オプションを構築する作業を行ってきました。先週かその前の週にここで質問をしたのですが、それがきっかけで質問を始め、最終的には大幅に絞り込みました。
単一のトランザクションを追跡するだけの在庫台帳から始めています。目標は、現在の在庫の合計、現在の販売の合計を保持し、アイテムが在庫切れになった場合、再供給までの日数を追跡する、より完全な台帳を構築することです。
最初のクエリでは、集計された列に対して自己結合を実行する前に、With ... as ステートメントを使用して集計を含むテーブルを定義していました。残念ながら、ビューを作成するために同じことを行うことはできないので、これらの集計を別の方法で作成する方法を見つける必要があります。これにより、それらに自己結合して合計を適切に保つことができます。
これまでの私の声明をどのように再構築したかを以下に示します。
Create View 'QLedger' as
Select tcum.txnid,
tcum.Item,
tcum.TxnDate,
tcum.[Tran Type],
tcum.Quantity,
tcum.cumq
from (select *, SUM( Quantity )
OVER (PARTITION BY InventoryLedger.Item
ORDER BY InventoryLedger.TxnID
ROWS UNBOUNDED PRECEDING ) cumq,
abs(
sum(
case when [Tran Type] = 'Shipping'
or [Tran Type] = 'Customer Return'
then Quantity end)
over (partition by qryrptInventoryLedger.item
order by InventoryLedger.txnid
rows unbounded preceding)) LifeSales
from InventoryLedger) tcum
left outer join InventoryLedger tcumnext
on tcum.Item = tcumnext.Item
and tcum.TxnID < tcumnext.TxnID
and
tcum.cumq = 0 and tcumnext.cumq >0
where tcum.Item = '103-02'
and tcum.cumq = 0
group by tcum.TxnID, tcum.TxnDate, tcum.Item, tcum.[tran type], tcum.Quantity
これはほぼ正しいですが、私が自分で参加しているテーブル (tcumnext) には、tcum と比較する実行中/累積数量の列がありません。比較するものを作る方法がまったくわかりません。誰でも私を助けることができますか?本当にありがたいです。長い間これに取り組んできた後、こんなに近くにいるのはエキサイティングでイライラします。