sql - 如何减去而不是添加 Sum() 之类的 sql 函数

标签 sql sql-server-2005 aggregate-functions

<分区>

我在 sql 语句中有一个 group by 子句,需要使用聚合函数来减去每个组中的所有值,而不是像 Sum() 函数那样添加。

SELECT Sum(A) 
FROM (  
  SELECT 2 AS A
  UNION 
  SELECT 1) AS t1

..so 将计算 2+1 并返回 3。

我需要某种方法来执行 2-1 以返回 1。

希望这是有道理的。我能想到的唯一方法是使用 CLR 集成来制作我自己的聚合函数。

还有其他想法吗?

最佳答案

您将如何确定要减去的项目?

一旦确定,它就是一个 SUM() 乘以 -1,然后加上该值。

编辑:

如果它是第一个被减去的值,则取该值,将其加倍,然后减去所有值的总和。 (将它加倍抵消了将它包含在所有值的总和中的效果。)

select top 1 @var = [value]
from myTable 
order by [some condition] 

select @minused = (2 * @var)  - sum([value]) 
from myTable 

关于sql - 如何减去而不是添加 Sum() 之类的 sql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280494/

相关文章:

c# - 如何将 SQL "WHERE expr IN (query)"翻译成 LINQ?

mysql - 对 MySQL 中 COUNT() 的结果求和

sql-server-2005 - 从字符串返回第一行

SQL Server 2005 : Index bigger than data stored

c# - C# Convert.ToDateTIme 函数将日期读取为 "dd/mm/yyyy"还是 "mm/dd/yyyy"?

mysql - 按 max(date) 获取记录,其中 date 可以为 null

c# - 使用 C# 在 SQL Server 数据库中存储敏感数据

mysql - 使用 insert into 使用 mysql

mysql - SQL 仅选择列上具有最大值的行

sql - 按范围聚合值