<分区>
我在 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 集成来制作我自己的聚合函数。
还有其他想法吗?
<分区>
我在 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 : Index bigger than data stored
c# - C# Convert.ToDateTIme 函数将日期读取为 "dd/mm/yyyy"还是 "mm/dd/yyyy"?
mysql - 按 max(date) 获取记录,其中 date 可以为 null
c# - 使用 C# 在 SQL Server 数据库中存储敏感数据