我之前的问题与此问题相关,已在此处回答:LINK
此查询对我来说非常合适,但我需要做一些更改。 我不需要将每个月显示为债务,而是只需要显示一年作为债务。
例如: 我需要检查一年中是否有任何付款,如果没有,那么我需要在我的表格中显示那一年。 在我之前的输出中,我有类似的东西:
Member's code | Debt ( Months )
555-12 | 2-2013
555-12 | 4-2013
现在我需要这个:
Member's code | Debt ( Years )
555-12 | 2012
这就是我尝试过的:Fiddle 在这个例子中,你可以看到我有一年不应该在那里。
答案 0 :(得分:1)
以下查询返回自第一个成员资格以来没有匹配项的年份:
select m.*, (year(Member_since) + n.n) as YearNotPaid
from members m join
numbers n
on year(Member_since) + n.n <= year(now()) left outer join
membership ms
on ms.code = m.code and
year(Member_since) + n.n = year(ms.paid)
where ms.id is null;
如果您只想要一位会员,可以加入AND m.Code = '555-12'
。