Sql 如何根据日期计算每个pvkey的总和,并且必须>=250

Sql 如何根据日期计算每个pvkey的总和,并且必须>=250,sql,addition,Sql,Addition,我需要将每个pvkey的金额加起来,只有那些total\u amount>=250的pvkey应该被列出,并且它们取决于特定的年份/日期 select finance.pvkey,sum(amount) from finance inner join contact on contact.pvkey = finance.pvkey where rectype='TOP_MAJDON'or rectype='MAJ_DON' or rectype='MEMBER'or rectype='MAJO

我需要将每个
pvkey
的金额加起来,只有那些
total\u amount>=250
的pvkey应该被列出,并且它们取决于特定的年份/日期

select finance.pvkey,sum(amount) from finance 
inner join contact
on contact.pvkey = finance.pvkey
where rectype='TOP_MAJDON'or rectype='MAJ_DON' or rectype='MEMBER'or rectype='MAJORDON'
and transdate between '2015-01-01' and '2015-12-31' and amount >=250
group by finance.pvkey 

我得到了一些结果,但其中一些是不正确的,一些小于250,并且不在某个日期内(在“2015-01-01”和“2015-12-31”之间)。

如果将
一起使用,则必须使用括号 像这样:


否则,您将无法获得所需的内容

使用聚合函数过滤器

 select finance.pvkey,sum(amount) from finance 
 inner join contact
 on contact.pvkey = finance.pvkey
 where rectype='TOP_MAJDON'or rectype='MAJ_DON' or rectype='MEMBER'or   rectype='MAJORDON'
 and transdate between '2015-01-01' and '2015-12-31' 
 group by finance.pvkey 
 having amount >=250

您需要修复
where
子句并添加
having
子句。对于
中的
,我建议使用
中的

select f.pvkey, sum(amount)
from finance f inner join
     contact c
     on c.pvkey = f.pvkey
where rectype in ('TOP_MAJDON', 'MAJ_DON', 'MEMBER', 'MAJORDON') and
      transdate between '2015-01-01' and '2015-12-31'
group by f.pvkey 
having sum(amount) >= 250;
注:我假设问题中的“总金额”指的是
sum(amount)
。如果它实际上指的是
金额
,则将比较结果保留在
where
子句中


我要补充一点:你似乎对条件中的
感到困惑。在您熟悉这种逻辑之前,我建议您在条件表达式周围使用括号。

顺序错误。。。先分组,然后再进行.Hi@garincha03一件事:确保您的transdate在'2015-01-01'和'2015-12-31'之间具有以下转换(字符(10),transdate,126)
,以防您使用sqlserver。您需要提及您正在使用的数据引擎的类型
select f.pvkey, sum(amount)
from finance f inner join
     contact c
     on c.pvkey = f.pvkey
where rectype in ('TOP_MAJDON', 'MAJ_DON', 'MEMBER', 'MAJORDON') and
      transdate between '2015-01-01' and '2015-12-31'
group by f.pvkey 
having sum(amount) >= 250;