滚动余额 SQL
Rolling Balance SQL
您好,我需要一些帮助
我有以下 select 声明但是滚动平衡似乎不起作用。
Select Distinct
Substring(Convert(Varchar(10), M.ValueDate, 101), 0, 11) As 'Value Date'
, base.Reference
, 'Transaction Discription' As [Transaction Discription]
, M.Action
, base.Nominal
, base.Consideration
, (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee) As 'Transaction Fee'
, base.VATFee As 'VAT'
, base.SecuritiesTransferTax
, (base.Consideration - (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee)) As [Total Consideration]
, (Select Top (1)
Round(Sum((base.Consideration - (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee))), 2)
From CashMovements T2
Where T2.RowId <= M.RowId
And T2.AccountNumber = M.AccountNumber
And T2.Action In ('W', 'D')
) As 'RunningTotal'
From (Select *
From Instructions
Where instructionId In (Select Distinct
XReference
From cashmovements As CM
Where accountnumber In (Select AccountNumber
From CashAccounts
Where AccountNumber In (Select Distinct
AccountNumber
From CrossReferences
Where Class In (Select ScripAccountId
From ScripAccounts))))
) As base
Inner Join CashMovements As M
On M.XReference = base.InstructionId
Where M.AccountNumber = '00000000006'
And M.Action In ('W', 'D')
And base.Consideration <> 0
And Nominal <> 0
Group By M.ValueDate
, base.Reference
, M.Action
, base.Nominal
, base.Consideration
, base.BrokerFee
, base.VATFee
, base.CSDPFee
, base.CSDFee
, base.InvestorProtectionLevyFee
, base.ExchangeFee
, base.GuaranteedFee
, base.SecuritiesTransferTax
, M.RowId
, M.AccountNumber
Order By base.Reference;
它似乎只是重复值
下面是我得到的结果集:
> Total Consideration RunningTotal
> 137.21 137.21
> 137.21 137.21
> 1462.25 1462.25
> 4406.74 4406.74
> 1462.25 1462.25
> 1462.25 1462.25
> 5878.99 5878.99
这就是我要的结果集
> Total Consideration RunningTotal
> 137.21 137.21
> 137.21 274.42
> 1462.25 1736.67
> 4406.74 6143.41
> 1462.25 7605.66
> 1462.25 9067.91
> 5878.99 14946.9
因此 运行 总计应随着总对价的增加而增加每一行
如果没有看到数据就很难判断你认为什么是错误的,但我认为你的子查询列应该删除前 1 条语句并且 base.Consideration 可能需要移到 select 之外.我也将四舍五入也移到了外面:
, Round(base.Consideration - (Select Sum(BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee)
From CashMovements T2
Where T2.RowId <= M.RowId
And T2.AccountNumber = M.AccountNumber
And T2.Action In ('W', 'D')
), 2) As 'RunningTotal'
您好,我需要一些帮助 我有以下 select 声明但是滚动平衡似乎不起作用。
Select Distinct
Substring(Convert(Varchar(10), M.ValueDate, 101), 0, 11) As 'Value Date'
, base.Reference
, 'Transaction Discription' As [Transaction Discription]
, M.Action
, base.Nominal
, base.Consideration
, (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee) As 'Transaction Fee'
, base.VATFee As 'VAT'
, base.SecuritiesTransferTax
, (base.Consideration - (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee)) As [Total Consideration]
, (Select Top (1)
Round(Sum((base.Consideration - (BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee))), 2)
From CashMovements T2
Where T2.RowId <= M.RowId
And T2.AccountNumber = M.AccountNumber
And T2.Action In ('W', 'D')
) As 'RunningTotal'
From (Select *
From Instructions
Where instructionId In (Select Distinct
XReference
From cashmovements As CM
Where accountnumber In (Select AccountNumber
From CashAccounts
Where AccountNumber In (Select Distinct
AccountNumber
From CrossReferences
Where Class In (Select ScripAccountId
From ScripAccounts))))
) As base
Inner Join CashMovements As M
On M.XReference = base.InstructionId
Where M.AccountNumber = '00000000006'
And M.Action In ('W', 'D')
And base.Consideration <> 0
And Nominal <> 0
Group By M.ValueDate
, base.Reference
, M.Action
, base.Nominal
, base.Consideration
, base.BrokerFee
, base.VATFee
, base.CSDPFee
, base.CSDFee
, base.InvestorProtectionLevyFee
, base.ExchangeFee
, base.GuaranteedFee
, base.SecuritiesTransferTax
, M.RowId
, M.AccountNumber
Order By base.Reference;
它似乎只是重复值
下面是我得到的结果集:
> Total Consideration RunningTotal
> 137.21 137.21
> 137.21 137.21
> 1462.25 1462.25
> 4406.74 4406.74
> 1462.25 1462.25
> 1462.25 1462.25
> 5878.99 5878.99
这就是我要的结果集
> Total Consideration RunningTotal
> 137.21 137.21
> 137.21 274.42
> 1462.25 1736.67
> 4406.74 6143.41
> 1462.25 7605.66
> 1462.25 9067.91
> 5878.99 14946.9
因此 运行 总计应随着总对价的增加而增加每一行
如果没有看到数据就很难判断你认为什么是错误的,但我认为你的子查询列应该删除前 1 条语句并且 base.Consideration 可能需要移到 select 之外.我也将四舍五入也移到了外面:
, Round(base.Consideration - (Select Sum(BrokerFee + CSDPFee + CSDFee + InvestorProtectionLevyFee + ExchangeFee + GuaranteedFee)
From CashMovements T2
Where T2.RowId <= M.RowId
And T2.AccountNumber = M.AccountNumber
And T2.Action In ('W', 'D')
), 2) As 'RunningTotal'