首页 > 解决方案 > 具有相同值和条件的属性的 SQL SUM

问题描述

如果我有这张桌子

MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 3105.77, '2018-01-20 09:15:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('45678901234', 1897.02, '2019-11-20 09:25:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 22.50,   '2019-03-22 07:50:44', 1)
MOVS (accounts, value, date, tipomov) VALUES ('12345678901', 1030.40, '2019-04-21 19:15:44', 1)
MOVS (accounts, value, date, tipomov) VALUES ('89012345678', 1200.55, '2019-01-20 11:15:44', 0)
MOVS (accounts, value, date, tipomov) VALUES ('45678901234', 300,     '2018-12-24 08:15:44', 1)

我想确定在 2018 年 12 月,tipomov 0 的价值总和大于 tipomov 1 的账户。我尝试了 GROUP BY 和其他条款,但似乎无法正确处理。

标签: sqlsql-serversumconditional-statements

解决方案


像这样的东西:

select sum(value)
from movs
where tipomov = 0
having sum(value) > (select sum(value)
                     from movs
                     where tipomov = 1
                       and date >= date '2018-12-01'
                       and date < date '2019-01-01')

日期范围条件是标准 SQL,但并非所有 DBMS 产品都支持,因此您可能需要将其调整为您正在使用的 DBMS。


推荐阅读