我已经阅读了 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
ETC
如果这是一个很好的方法。我只是在寻找一种计算价格差异的方法。由于此表有大约 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 解释。
这可能是一个完全新手的问题,我感谢任何人可以提供的任何见解来帮助实现我的目标。