2014-01-28 33 views
0

我想用列选择更新用户变量。我有错误这样如何使用列选择查询更新sql中的变量值

SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations 

我需要这个报告,如:这里的信用卡和借记表列。平衡是用户列

表值

enter image description here

预期结果

enter image description here 我试图像该结果示错此代码

Declare @Openingbalance decimal(18,8) set @Openingbalance=100 select CreditAmount, DebitAmount, (@Openingbalance + CreditAmount-DebitAmount) as 'Balance' from ACT_Transaction 

。由于期初余额未在SELECT语句

回答

2

更新这应该适用于2008年以后的SQL

Declare @Openingbalance decimal(18,8) = 100 
select CreditAmount, 
     DebitAmount, 
     (@Openingbalance + CreditAmount-DebitAmount) as 'Balance' 
from ACT_Transaction 
+0

是的,它的工作。但结果不对。你看到我的预期结果了吗?余额应该更新下一行。 – user2354274

+0

你的问题不清楚。如果将变量的值设置为静态100,则每行将使用相同的值。从你想要的输出,我认为你正在寻找一个运行总数 – Raj

+0

是的,开放平衡变量应该更新。因为我的期初余额为100.现在我的帐户中有100笔存款,所以余额应该显示为200.之后,这10笔贷记。现在余额为210.如果扣款,我们需要扣款。 – user2354274

0
Declare @Openingbalance decimal(18,8) 
set @Openingbalance=100 
select @Openingbalance as 'Openingbalance', CreditAmount 
DebitAmount, (@Openingbalance + CreditAmount-DebitAmount) as 'Balance' from ACT_Transaction 
+0

是的,它的工作。但结果不对。你看到我的预期结果了吗?余额应该更新下一行 – user2354274

+0

它应该通过什么更新?是不是所需的输出? –

+0

是的,开盘平衡变量应该更新。因为我的期初余额为100.现在我的帐户中有100笔存款,所以余额应该显示为200.之后,这10笔贷记。现在余额为210.如果扣款,我们需要扣款。 – user2354274

0

技术上查询是正确的,但你没有提到要显示期初余额为单独列或在平衡列?

可以使用子查询

声明@optBal数字做这样的事情(10) 设置@ optBal = 100

选择fldDate, fldTrxType, fldAmount, (SELECT SUM(转换(钱,情况下,当cramt然后-1别的1个端)* cramt + @optBal) 从tblTrx 其中fldDate < = trx.fldDate),如通过fldDate

余额 从tblTrx TRX 顺序
+0

期初余额变量应该更新。因为我的期初余额为100.现在我的帐户中有100笔存款,所以余额应该显示为200.之后,这10笔贷记。现在余额为210.如果扣款,我们需要扣款。看到我的输出 – user2354274