我需要帮助构建一个查询,该查询返回同一表中的值 + 另一个值与给出结果的另一个 ID 之间的最小差异(加上总和不能是值本身的总和)
桌子:
ID Value
1 1
2 2
3 5
4 -10
5 -5
6 3
7 -15
预期结果:
ID Value MinDif IDofTheOtherValue
1 1 3 2 <-- MinDif = 1 + 2 (ID 1 + ID 2)
2 2 3 1 <-- MinDif = 2 + 1 (ID 2 + ID 1)
3 5 0 5 <-- MinDif = 5 + -5 (ID 3 + ID 5)
4 -10 -5 3 <-- MinDif = -10 + 5 (ID 4 + ID 3)
5 -5 0 3 <-- MinDif = -5 + 5 (ID 5 + ID 3)
6 3 -2 5 <-- MinDif = 3 + -5 (ID 6 + ID 5)
7 -15 -10 3 <-- MinDif = -15 + 5 (ID 7 + ID 3)
这是创建表的查询:
DECLARE @myTable TABLE(ID int, Value int)
INSERT INTO @myTable VALUES (1, 1), (2,2), (3, 5), (4, -10), (5, -5), (6, 3), (7, -15)
这是我尝试过的,但这会产生 SQL 错误(无法对包含聚合或子查询的表达式执行聚合函数。)
SELECT m.ID, MIN(ABS(m.Value + (SELECT m2.Value FROM @myTable m2)))
FROM @myTable m