SQL Server:在同一列中的行之间进行减法或求和,然后更新结果
我在MS SQL Server上有一个表,它有一个标准的行类型SQL Server:在同一列中的行之间进行减法或求和,然后更新结果,sql,sql-server,Sql,Sql Server,我在MS SQL Server上有一个表,它有一个标准的行类型BID。我想从availableAmount列的BID中减去所有行类型ASK,然后将结果更新到同一列的BID行中。同时,我想计算行类型ASK的fulfilledAmount之和,然后将结果更新到行类型BID的同一列中。我仍在学习SQL,但有可能完成这个复杂的过程吗 编辑 例如: 执行前: id | type | availableAmount | fulfilledAmount | -----+------+----------
BID
。我想从availableAmount
列的BID
中减去所有行类型ASK
,然后将结果更新到同一列的BID
行中。同时,我想计算行类型ASK
的fulfilledAmount
之和,然后将结果更新到行类型BID
的同一列中。我仍在学习SQL,但有可能完成这个复杂的过程吗
编辑
例如:
执行前:
id | type | availableAmount | fulfilledAmount |
-----+------+-----------------+-----------------+
abcv | ASK | 500 | 500 |
xyzs | ASK | 600 | 600 |
scwd | BID | 10000 | 0 |
cd21 | ASK | 1300 | 1300 |
sadc | ASK | 3400 | 3400 |
2w3e | ASK | 2500 | 2500 |
id | type | availableAmount | fulfilledAmount |
-----+------+-----------------+-----------------+
abcv | ASK | 500 | 500 |
xyzs | ASK | 600 | 600 |
scwd | BID | 1700 | 8300 |
cd21 | ASK | 1300 | 1300 |
sadc | ASK | 3400 | 3400 |
2w3e | ASK | 2500 | 2500 |
执行后:
id | type | availableAmount | fulfilledAmount |
-----+------+-----------------+-----------------+
abcv | ASK | 500 | 500 |
xyzs | ASK | 600 | 600 |
scwd | BID | 10000 | 0 |
cd21 | ASK | 1300 | 1300 |
sadc | ASK | 3400 | 3400 |
2w3e | ASK | 2500 | 2500 |
id | type | availableAmount | fulfilledAmount |
-----+------+-----------------+-----------------+
abcv | ASK | 500 | 500 |
xyzs | ASK | 600 | 600 |
scwd | BID | 1700 | 8300 |
cd21 | ASK | 1300 | 1300 |
sadc | ASK | 3400 | 3400 |
2w3e | ASK | 2500 | 2500 |
如果我理解正确,您需要符合以下要求:
UPDATE myTable
SET availableAmount = availableAmount - (
SELECT SUM(availableAmount)
FROM myTable
WHERE TYPE = 'ASK'
)
,fulfilledAmount = (
SELECT SUM(fulfilledAmount)
FROM myTable
WHERE TYPE = 'ASK'
)
WHERE TYPE = 'BID'
AND ID ='scwd'
编辑您的问题,并在问题中以文本表的形式提供示例数据。然后提供你想要的结果。这里的大多数人想要格式化的文本,而不是图像。很抱歉,我编辑了这个问题很抱歉,我编辑了这个问题,希望它是清楚的now@Ho阿恩古伊ễn、 好的,那么我相信我的答案就是你想要的,顺便问一下,如果我组合一个查询来插入更多的行,同时执行更新查询,那么TYPE='ASK'和@apomene是否有效?或者我必须在两个单独的查询中执行此操作?