将基表值与第二个表的值之和与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进行比较的主要内容,如果未能解决你的问题,请参考以下文章

您可以将一个表中具有另一个表的列名的列与第二个表链接吗

SQL GROUP BY/COUNT 即使没有结果

使用 group by 从一个包含批量记录的表中获取一些统计数据并将结果放入第二个表中

仅删除与第二个表对应的第一个表中没有条目的那些

需要将AoH中的一个值与第二个AoH中的另一个值进行比较

如何使用触发器将基表的所有更新列添加到审计表的多行?