我有一个需求,我需要在多个记录中均匀分配一个值。下面是我的数据看起来像价值分摊的T-SQL查询
Relationship Table
-------------------------------------------------------
CategoryID SubCategoryID
-------------------------------------------------------
101 1
101 2
101 3
102 4
102 5
Table 1
-------------------------------------------------------
BatchLine ID CategoryID Amount
-------------------------------------------------------
1 101 10
2 102 100
3 101 100
Table 2
-------------------------------------------------------------------
LineID BatchLineID CategoryID SubCategoryID LineValue
-------------------------------------------------------------------
1 1 101 1 3.33
2 1 101 2 3.33
3 1 101 3 3.33
4 2 102 4 66.66
5 2 102 5 33.33
6 3 101 1 33.33
7 3 101 2 33.33
8 3 101 3 33.33
在“表2”中的“LineValue”是从“表1”上的“金额”字段进行的计算的结果,然后将最终值四舍五入到两位小数点。在某些情况下,舍入过程会导致与“表格1”中的“金额”字段存在一些差异。
Difference
------------------------------------------------------------------
BatchLineID CategoryID Amount SumofLineValue
------------------------------------------------------------------
1 101 10 9.99
2 102 100 99.99
3 101 100 99.99
为了从“表1”匹配“金额”值,我们需要与类别ID组中添加“0.01”到每个“LineID”直到的“LineValue”等于它的总和。
还有一个条件,在'CategoryID'101的情况下'表2'中有两组数据。我们将“0.01”添加到LineID 1,这将使总和与“表1”中的“金额”字段匹配。当我们需要分摊第二组时,需要以“线路ID”7而不是6开始。下面是我预期的数据。
Expected Output
-------------------------------------------------------------------
LineID BatchLineID CategoryID SubCategoryID LineValue
-------------------------------------------------------------------
1 1 101 1 3.33 + 0.01
2 1 101 2 3.33
3 1 101 3 3.33
4 2 102 4 66.66 + 0.01
5 2 102 5 33.33
6 3 101 1 33.33
7 3 101 2 33.33 + 0.01
8 3 101 3 33.33
是否将LineValue定义为十进制(x,2)? – McNets
@McNets是,它被定义为十进制(X,2) – Prakazz
批量最多有3行吗? – McNets