有人可以帮我解决以下问题吗?
我有2个表连接在一起,一个是发票标题,其中包含发票未结清的金额,另一个是包含原始金额分析的发票行。我需要根据个别原始金额分配未付金额,以便总金额是未偿还金额的总和。
我开始使用的代码是:
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
我得到的结果是:
未结金额列需要在前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
错误是:
警告:聚合或其他SET操作消除了空值。
(1行(s)受影响) Msg 8134,Level 16,State 1,Line 4 除以遇到的零错误。
答案 0 :(得分: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
在自己的查询中放了这个。