Sql server 如何减去金额
我试图在sql server中进行查询,但未生成结果 我的查询、表格和预期结果Sql server 如何减去金额,sql-server,Sql Server,我试图在sql server中进行查询,但未生成结果 我的查询、表格和预期结果 USE [bank] GO /****** Object: StoredProcedure [dbo].[Pr_Rpt_BankPlaning] ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PRODCEDURE [dbo].[Pr_Rpt_BankPlaning] AS BEGIN ; WITH cte AS
USE [bank]
GO
/****** Object: StoredProcedure [dbo].[Pr_Rpt_BankPlaning] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PRODCEDURE [dbo].[Pr_Rpt_BankPlaning] AS
BEGIN ;
WITH cte AS
(
SELECT
TotalAmount,
BankAmount,
(TotalAmount-BankAmount) AS minusamount,
rownum = ROW_NUMBER() OVER (order BY BankAmount)
FROM Bank AS bc
)
SELECT
CASE
WHEN cte.TotalAmount = prev.TotalAmount THEN prev.minusamount
ELSE cte.TotalAmount
END AS TotalAmount1,
cte.BankAmount,
CASE
WHEN cte.TotalAmount = prev.TotalAmount THEN prev.minusamount
ELSE cte.TotalAmount
END
-cte.BankAmount AS Amount,
cte.minusamount,
cte.rownum
FROM CTE
LEFT JOIN CTE prev ON prev.rownum = CTE.rownum - 1
LEFT JOIN CTE nex ON nex.rownum = CTE.rownum + 1
END
这个查询给出了这个结果
但我希望这种类型的结果结转,减去下一个总额中的金额
虽然您还没有按照其他人的要求提供任何样本数据,但我还是使用了第一个屏幕截图中显示的输出作为样本数据来提供所需的输出。您需要在查询中集成我的CTE以获得输出 下面的查询为您提供了所需的输出
DECLARE @AMOUNT_DATA TABLE(TA INT, BA INT,AM INT,MAMT INT,ROWNUM INT )
INSERT INTO @AMOUNT_DATA VALUES
(458800,25000,433800,433800,1),
(433800,25000,408800,433800,2),
(433800,100000,333800,358800,3)
;WITH AMOUNT_DATA
AS
(
SELECT ROWNUM,TA,BA,TA-BA RESULT FROM @AMOUNT_DATA WHERE ROWNUM=1
UNION ALL
SELECT T2.ROWNUM,T1.RESULT TA,T2.BA,T1.RESULT-T2.BA FROM AMOUNT_DATA T1
JOIN @AMOUNT_DATA T2 ON T1.ROWNUM=T2.ROWNUM-1
)
SELECT * FROM AMOUNT_DATA
输出
------------------------------
--ROWNUM TA BA RESULT
------------------------------
1 458800 25000 433800
2 433800 25000 408800
3 408800 100000 308800
------------------------------
看到用笔和纸的理想效果(截图也很好)是很有趣的…任何人都能回答这个问题吗?你能发布银行的内容(从最初的CTE开始)吗。所有行,或至少前3行。如果您可以编辑您的问题,将示例数据包括为ddl+dml,这将有助于其他人回答问题。