将基表值与第二个表的值之和与group by进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将基表值与第二个表的值之和与group by进行比较相关的知识,希望对你有一定的参考价值。
我有两张桌子:
一个是基表,第二个是事务表。我想比较基表值和第二个表的值总和与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。
以上是关于将基表值与第二个表的值之和与group by进行比较的主要内容,如果未能解决你的问题,请参考以下文章