當我更新帳戶的收入或結果值時,我應該使用什么查詢來更新 Total 和 Total_previous 列。請注意,記錄按 Posting_DataTime 列排序,而 Transaction_ID 未排序。
| 戶口號碼 | 交易 ID | Posting_DataTime | 收入 | 結果 | 全部的 | Total_previous |
|---|---|---|---|---|---|---|
| 001 | 11111111 | 2021-12-01 00:00 | 100 | 空值 | 100 | 空值 |
| 001 | 11112331 | 2021-12-04 04:00 | 10 | 空值 | 110 | 100 |
| 021 | 11111031 | 2021-12-04 04:23 | 1200 | 空值 | 2000年 | 800 |
| 001 | 11111231 | 2021-12-08 07:44 | 空值 | 40 | 70 | 110 |
| 001 | 00011231 | 2021-12-20 11:59 | 200 | 空值 | 270 | 70 |
如果我將 11112331 (Transaction_ID) 的 Income 值從 10 更新為 50,則該帳戶 (001) 的下一行應如下所示
| 戶口號碼 | 交易 ID | Posting_DataTime | 收入 | 結果 | 全部的 | Total_previous |
|---|---|---|---|---|---|---|
| 001 | 11111111 | 2021-12-01 00:00 | 100 | 空值 | 100 | 空值 |
| 001 | 11112331 | 2021-12-04 04:00 | 50 | 空值 | 150 | 100 |
| 021 | 11111031 | 2021-12-04 04:23 | 1200 | 空值 | 2000年 | 800 |
| 001 | 11111231 | 2021-12-08 07:44 | 空值 | 40 | 110 | 150 |
| 001 | 00011231 | 2021-12-20 11:59 | 200 | 空值 | 310 | 110 |
uj5u.com熱心網友回復:
看起來您希望按 account_no 對 post_datatime 排序的(收入 - 結果)相加。代替更新的更好選擇是將其作為“視圖”而不是每次發生更改時更新。
create table t(account_no varchar(10),trans_id varchar(1000),posting_datatime datetime,Income int, Outcome int);
insert
into t
select '001','11111111','2021-12-01 00:00',100 ,null union all
select '001','11112331','2021-12-04 04:00',10 ,null union all
select '021','11111031','2021-12-04 04:23',1200 ,null union all
select '001','11111231','2021-12-08 07:44',null ,40 union all
select '001','00011231','2021-12-20 11:59',200 ,null;
select account_no
,trans_id
,posting_datatime
,income
,outcome
,sum(isnull(income,0)-isnull(outcome,0))
over(partition by account_no order by posting_datatime) as total
,sum(isnull(income,0)-isnull(outcome,0))
over(partition by account_no order by posting_datatime)
-(isnull(income,0)-isnull(outcome,0))as total_prev
from t
order by posting_datatime;
| 戶口號碼 | trans_id | 發布資料時間 | 收入 | 結果 | 全部的 | total_prev |
|---|---|---|---|---|---|---|
| 001 | 11111111 | 2021-12-01 00:00:00.000 | 100 | (空值) | 100 | 0 |
| 001 | 11112331 | 2021-12-04 04:00:00.000 | 10 | (空值) | 110 | 100 |
| 021 | 11111031 | 2021-12-04 04:23:00.000 | 1200 | (空值) | 1200 | 0 |
| 001 | 11111231 | 2021-12-08 07:44:00.000 | (空值) | 40 | 70 | 110 |
| 001 | 00011231 | 2021-12-20 11:59:00.000 | 200 | (空值) | 270 | 70 |
鏈接 https://sqlize.online/sql/mssql2017/e86a41327cd213441797c775652f9a69/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399922.html
標籤:sql-server 查询语句
上一篇:使用SQL從日志表中獲取重試時間
