2016-01-12 57 views
0

有人可以幫我解決以下問題嗎?分配值

我有兩個表連接在一起,一個是包含發票金額未清的發票標題,另一個是包含原始金額分析的發票行。我需要將未償金額與個別原始金額分攤,以便總金額爲未償金額總額。

我已經開始用的代碼是:

SELECT 

    t1.TRANSACTION_REFERENCE 
    ,[LINE_NUMBER] 
    ,[LINE_SEQUENCE_NUMBER] 
    ,t2.OUTSTANDING_AMOUNT 
    ,[NET_AMOUNT] 
    ,[VAT_AMOUNT] 

    FROM I_DB_TRANSACTION_DETAIL_FACT t1 

INNER JOIN I_DB_TRANSACTION_HEADER t2 on t1.TRANSACTION_REFERENCE =  
t2.TRANSACTION_REFERENCE 

結果我得到的是:

enter image description here

餘額列需要顯示在第4行零,然後£第5和6行分別爲2351.17和131.44英鎊。

編輯:

這是在標題表中保持的數據

TRANSACTION_REFERENCE OUTSTANDING_AMOUNT

IN0110468843 2482.61

編輯2:

我用修改後的代碼和它返回一個錯誤:

(
select sum(net_amount) originalamount from I_DB_TRANSACTION_DETAIL_FACT 
) 
select *,case when NET_AMOUNT =0 then 0 else 
NET_AMOUNT/(fn.ORIGINAL_AMOUNT * fn.OUTSTANDING_AMOUNT) end  
newoutstandingamount 
from 
I_DB_TRANSACTION_DETAIL_FACT T 
cross apply (select * from I_DB_TRANSACTION_HEADER)fn 

錯誤是:

警告:Null值由聚合或其它SET操作消除。

(1 row(s)affected) Msg 8134,Level 16,State 1,Line 4 除以零遇到的錯誤。

+0

原來的金額在哪裏?前4行應該是0等等? – KumarHarsh

+0

給我們提供兩個表格中的數據樣本..很難理解爲什麼結果應該如您所說 – sagi

+0

對不起,原始金額是淨金額,因爲前4行的淨金額爲0,傑出的必須是零。原始淨額總額爲4399.86英鎊,因此如果您計算4166.91英鎊/ 4399.86英鎊* 2482.61英鎊,那麼該特定行的未付金額爲2351.17英鎊。 – missspeedy

回答

0

這很簡單,雖然你應該高速拋出一些示例數據。 嘗試自己喜歡這個的,

;with CTE as 
(
select sum(net_amount) originalamount from table1 
) 
select *,case when netamount =0 then 0 else 
netamount/(fn.originalamount *outstandingamount) end newoutstandingamount 
from 
table1 T 
cross apply (select * from CTE)fn 
在自己的查詢

把這個。

+0

原始文章中有樣本數據的屏幕截圖? – missspeedy

+0

我努力讓這個工作,因爲net_amount來自表1,而outstanding_amount來自表2.此外,fn來自fn.originalamount? – missspeedy

+0

我從來沒有使用過交叉應用,所以只是試圖找出它的作用:) – missspeedy