0

製品の平均原価価格が新規購入ごとに変化する平均原価法を使用して、在庫システムを開発しています。使用しているデータベースは SQL Server 2008 です

ここで、製品の販売ごとに原価を追加する必要があるレポートで、販売された商品の原価を計算する必要がありますが、この原価はその特定の購入期間に関連している必要があります。

私の購入表

Purchase_Date   Product_ID   Ave_Cost_Price
1-jan-2013      1                  5.5
15-jan-2013     1                  6.5
30-jan-2013     1                  7.5

私の販売表

Sale_Date   Product_ID    Sale_Price Cost_Price
5-jan-2013      1              10         ?         SALE-1
17-jan-2013     1              10         ?         SALE-1
31-jan-2013     1              15         ?         SALE-1

SALE レポートを作成すると、SALE-1 は 5.5、SALE-2、6.5、SALE-3 は製品原価として 7.5 を選択する必要があります。購入が見つからない場合は、product_table から開始する Cost_Price を選択する必要があります。

私は仕事をするべきそのようなクエリを探しています???

いくつかのグループ化と内部結合によってそれができるかもしれないと思いますが、それを理解することはできません.

何か提案をしてください????

よろしくラザ

4

3 に答える 3

0

私は、select句内の相関サブクエリの大ファンではありません。その理由の一部は、審美性とメンテナンス性にあります。私は、すべてのテーブル参照を 1 か所 (from句内) に配置することを好みます。その理由の一部はパフォーマンスです。私は、それらがネストされたループ結合に変わると考える傾向があります (通常はさらに悪いことです)。確かに、SQL オプティマイザはここ数年で大幅に改善されました。

しかし、これが最良のアプローチであると私が考える1つのケースです。

【アップロードできない】

相関サブクエリは . . .

select s.*,

           (p.purchase_date <= sys.sale_date および p.product_id = s.product_id order by p.purchase_date desc の場合、購入 p から上位 1 つの ave_cost_price を選択) 販売 s からの purchaseprice

purchase(product_id, purchase_date)またはにインデックスがある場合、パフォーマンスは問題ないはずですpurchase(product_id, purchase_date, ave_cost_price)

于 2013-02-05T21:05:51.567 に答える
0

製品 ID と日付で両方のテーブルを結合します - 月と年の部分のみ、ID+月/年の順に並べます。減算... 申し訳ありませんが、データを投稿していないため、クエリはありません。

于 2013-02-05T21:29:12.193 に答える
0

この種のデータに関するレポートを作成する一般的な方法の 1 つは、非正規化されたデータ ウェアハウジング テーブルを作成することです。その中には、売上の列と、コストなどの計算対象の追加の列があります。最初の列に売上に基づく挿入を入力し、残りの列に適切なコストを選択する 2 番目の挿入クエリを入力します。レポートは、このデータ ウェアハウス テーブルに対して実行されます。

ここでのスピードとシンプルさの向上は明らかであり、特に大量のレコードがある場合は顕著です。また、この「フラットな」テーブルに対してレポートを作成するのも非常に簡単です。これの唯一の欠点は、元のデータへの変更をウェアハウス テーブルに再適用する必要があることです。ただし、通常は、レコードが変更されなくなる「決算」期間の前に倉庫テーブルにデータを入力します。正しいコストを選択する方法については、ほとんどの場所では、特定の購入「ロット」を販売と一致させようとするのではなく、特定の期間の商品のドルコスト平均を使用します. そうしないと、あなたが説明した方法では、返品などの処理が事実上不可能になります。返品された製品にはどのような費用が割り当てられますか? アイテムがシリアル番号やその他の一意の識別子を持つのに十分な大きさであれば、それを行うことができると思います. ただし、その場合、コストの選択クエリは日付に関連しません。ID関連でしょう。

于 2013-10-15T03:39:01.753 に答える