我有一個需求,我需要在多個記錄中均勻分配一個值。下面是我的數據看起來像價值分攤的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