我有一个包含位置,ID,费用类型和成本的表格。 有三种特定的费用类型需要分配给其他费用类型。
实施例数据SQL Fiddle
在该例子中数据,为简单起见,只有一个位置。
三种类型值x
,y
,z
是要分配到其他类型(a->e
)的类型。
分配需要在三个阶段,每个三种类型,并有一个审计线索,显示多少x
类型的去各类型,然后y
和z
。订单是x -> y ->z
。
分布是基于每种类型的分组总和,所以在示例性数据,该分组是
a - 31.3
b - 15
c - 68.4
d - 57.3
e - 55.3
的x
值为-12.7
分布公式是 aDiff = (a*(x/(a+b+c+d+e)))
aDiff
是然后均匀分配到每个a
类型。在这个例子中,是aDiff
-1.74
,所以由于存在两个a
值,ID 101是10.5 +(aDiff/2),从而导致与9.63
的-0.874
审计值
任何人都知道如何去吗?我正努力从哪里开始使用sql脚本来做到这一点。
编辑: 更新SQL小提琴与最新的代码。我发现的问题是,将其应用于完整数据集时,值不正确。原始数据的A-Z总和应该等于新数据中A-E的总和,但不是。不知道现阶段发生了什么。
-0.874审计显示应用的更改。旧值10.5,新值9.63,由于X的变化为-0.874。一旦添加了其他值,您将能够看到X导致-0.874的变化,Y导致-4的变化,并且Z导致+1的变化。我会玩你的代码。您可以检查我正在使用的代码的SQL小提琴。 – Matt