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 | -----+------+----------

我在MS SQL Server上有一个表,它有一个标准的行类型
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是否有效?或者我必须在两个单独的查询中执行此操作?