存储过程内的年计算

时间:2013-12-14 17:16:44

标签: mysql sql database date

我之前的问题与此问题相关,已在此处回答:LINK

此查询对我来说非常合适,但我需要做一些更改。 我不需要将每个月显示为债务,而是只需要显示一年作为债务。

例如: 我需要检查一年中是否有任何付款,如果没有,那么我需要在我的表格中显示那一年。 在我之前的输出中,我有类似的东西:

Member's code  |  Debt ( Months )        
555-12         |     2-2013        
555-12         |     4-2013       

现在我需要这个:

Member's code  |  Debt ( Years )
555-12         |     2012

这就是我尝试过的:Fiddle 在这个例子中,你可以看到我有一年不应该在那里。

1 个答案:

答案 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'