我有两张桌子:
一个是基表,第二个是事务表。我想比较基表值和第二个表的值总和与group by。
Table1(T1Id,Amount1,...)
Tabe2(T2Id,T1ID,Amount2)
我希望表1中的那些行表2的SUM(Amount2)的和是大于或等于table1的Amount1。
* T1ID与两个表有关* SQL查询与其他表有许多连接以进行数据重新审查。
一种方法使用连接:
SELECT t1.T1Id, t1.Amount1
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.T1Id = t2.T1ID
GROUP BY
t1.T1Id, t1.Amount1
HAVING
SUM(t2.Amount2) >= t1.Amount1;
我们也可以尝试通过相关子查询来做到这一点:
SELECT t1.T1Id, t1.Amount1
FROM Table1 t1
WHERE t1.Amount1 <= (SELECT SUM(t2.Amount2) FROM Table2 t2
WHERE t1.T1Id = t2.T1ID);
我会使用类似于下面的查询:
SELECT
a.T1Id, a.Amount1, SUM(b.Amount2)
FROM Table1 a
INNER JOIN Table2 b on b.T1Id = a.T1Id
GROUP BY a.T1Id, a.Amount1
HAVING SUM(b.Amount2) >= a.Amount1;
基本上上面的查询是给你ID,表1中的金额和表2中的总和金额。查询结尾的HAVING子句过滤掉那些第二个表中的总和金额小于来自第二个表的金额的记录。第一个。
如果要在查询中添加更多表连接,可以通过添加任意数量的连接来实现。我建议为您在Table1表中加入的每个表都有一个引用的ID。