我已经阅读了stackoverflow上的几篇帖子,试图确定计算项目表的时间跨度内价格差异的最佳路径。我的ITEM_NO,月份和年份都在同一个表格中以及单位成本。基本上,我在这里有一些示例数据:
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解释。
这可能是一个全新的问题,我很感激任何人都可以提供帮助以实现我的目标。
答案 0 :(得分:1)
你真的不想要这样的东西:
SELECT
ITEM_NO ItemNumber,
TXN_YR Year,
TXN_MON Month,
AVG(UNIT_COST) AveragePrice,
VAR(UNIT_COST) PriceVarianceInMonth
FROM
DS_tblFactInventoryTxnHistory
GROUP BY
ITEM_NO,
TXN_YR,
TXN_MON
ORDER BY
ITEM_NO,
TXN_YR,
TXN_MON
它将提供更有意义的数据。
本质上,group子句用于将数据分成组。在我的查询中,我按ITEM_NO
,TXN_YR
和TXN_MON
对数据进行分组。结果应该为每个月的每个项目分组。 UNIT_COST
可能因组中的每个成员而异。
在结果中,我可以将聚合函数应用于组,以允许我表达该组的某些属性。在我的示例中,我返回组的平均单位成本以及组的统计方差。
因此,结果集中的每一行都会为每个组包含一行,包括:
ITEM_NO
TXN_YR
TXN_MON
UNIT_COST
UNIT_COST
的差异