SQL查询以获取在一个时间范围内包含多个实例的值

时间:2018-09-28 16:36:20

标签: mysql

我只想查找在其自己的30天,3个月和1年期限内有一个以上close_date实例的帐户,这些实例在其自己的每月,季度和年度到期日期结束。但是,每个帐户都有其自己的到期日期范围。 我的WHERE子句似乎无法弄清楚如何实现正确的30天,每季度和每年的范围。

我不确定BETWEEN子句是否合适,还是应该使用大于/小于。

SELECT a.acct, COUNT(d.closed_date) AS cd, a.billing_expiration_date
FROM docupaid d
INNER JOIN account a ON a.acct=d.acct
WHERE (d.closed_date) BETWEEN (a.bill_expiration_date minus 30 days) AND a.billing_expiration_date                    
GROUP BY acct desc
HAVING cd>1

1 个答案:

答案 0 :(得分:0)

您可以使用DATE_SUB功能:

SELECT a.acct, 
       COUNT(d.closed_date) AS cd, 
       a.billing_expiration_date
FROM docupaid d
INNER JOIN account a ON a.acct=d.acct
WHERE d.closed_date BETWEEN DATE_SUB(a.bill_expiration_date, INTERVAL 30 DAY) 
                            AND a.billing_expiration_date                    
GROUP BY acct desc
HAVING cd > 1