【发布时间】:2024-05-22 04:15:01
【问题描述】:
在SQL Server 中,您可以执行 sum(field1) 来获取与 groupby 子句匹配的所有字段的总和。
但我需要减去字段,而不是相加。
有没有类似的东西可以用来代替 sum(field1) ?
例如table1有这样的内容:
name field1
A 1
A 2
B 4
查询:
select name, sum(field1), subtract(field1)
from table1
group by name
会给我:
A 3 -1
B 4 4
我希望我的问题很清楚。
编辑:
还有一个我可以使用的排序字段。 这确保值 1 和 2 将始终导致 -1 而不是 1。
我需要的是减去 A 的所有值,在我的示例中为 1 - 2 = -1
编辑2: 如果 A 组的值为 1、2、3、4,则结果必须为 1 - 2 - 3 - 4 = -8
【问题讨论】:
-
subtract 将转换为
SUM(-field1)但从您给出的示例来看,它不会给您想要的结果。你想要+X1-X2-X3,它不是和的倒数,是+X1+X2+X3。 -
您必须有一列指示订单,因为 2-1 不是 1-2
-
你必须详细说明这个函数应该如何工作。如果 A 组有以下值:1、2、3、4,最终结果应该是什么,为什么?
-
如果一个组的值为 1、2、3、4,则结果必须为 1 - 2 - 3 - 4 = -8
标签: sql sql-server tsql aggregate-functions