アイテムのテーブルの期間にわたる価格の分散を計算するための最適なルートを決定しようとして、stackoverflow でいくつかの投稿を読みました。私の ITEM_NO、Month、Year はすべて、Unit cost と同様に同じテーブル内にあります。基本的に、ここにいくつかのサンプルデータがあります:
DECLARE @Inventory TABLE (Month NUMERIC, Year NUMERIC, ItemNumber NUMERIC, Cost DECIMAL)
INSERT @Inventory
SELECT '01', '12', '0001', '1.05'
SELECT '02', '12', '0001', '1.05'
SELECT '03', '12', '0001', '1.02'
SELECT '02', '12', '0002', '1.25'
SELECT '03', '12', '0003', '1.55'
SELECT '03', '12', '0003', '1.57'
SELECT '03', '12', '0003', '1.61'
SELECT '03', '12', '0002', '1.29'
基本的に、出力は次のようになります。
Item Number | Current Cost | % Change | Month | Year
-----------------------------------------------------------
0001 | 1.02 | 0.01 | 02 | 12
等
それが良い方法であれば。価格の差異を計算する方法を探しています。このテーブルには約 600,000 行があり、item_number は時間の経過とともに異なる価格 (毎月または数か月ごとに異なる) で複数回繰り返されるため、レポートを生成すると便利です。私は SQL に完全に慣れているわけではありませんが、T_SQL には少し慣れていないため、この考えに頭を悩ませようとしています。
私はもう試した:
USE BWDW; -- database
GO
SELECT ITEM_NO AS 'Item Number', TXN_YR AS 'Year', TXN_MON AS 'Month', UNIT_COST AS 'Item Price', STDEV(UNIT_COST) AS 'Variance Price'
FROM DS_tblFactInventoryTxnHistory
GROUP BY ITEM_NO, TXN_YR, TXN_MON, UNIT_COST
ORDER BY ITEM_NO;
GO
出力は次のようになります。
Item Number Year Month Item Price Variance Price
02009739 11 11 6180.0000 0
02009779 11 11 5459.0000 0
104415 12 8 0.0618 0
104415 12 9 0.0618 NULL
104650 11 5 1.0000 0
104650 11 7 1.0000 0
104650 11 8 0.2575 NULL
104650 11 10 0.2575 0
104650 11 12 0.0319 NULL
104650 11 12 0.1071 0
104650 11 12 0.1823 0
104650 11 12 0.2575 0
104650 12 8 0.0319 1.07539867831324E-09
104650 12 9 0.0319 1.57825377906919E-09
これは、最終的にドルになるものには多くの小数のように思えます。最後の列を切り上げることができることはわかっています。MSDN の STDEV、サイトのさまざまなソース、および sqlteam のサイトの DATEDIFF の説明について読んでいます。
これはおそらく完全に初歩的な質問であり、私の目的を支援するために誰かが提供できる洞察に感謝します。