2014-01-28 38 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