在访问查询中仅显示具有特定字段数据的最后记录

时间:2016-12-06 20:45:01

标签: sql ms-access ms-access-2016

我的SQL技能非常基础,但我试图为小型企业设置非盈利数据库。 我有一张包含财务数据的表格(extract_financial):

regno (organisation registration number, unique),
fystart (date, financial year start),
fyend (date, financial year end),
income,
exped (expenditure).

每个组织将有不同财务年度的一些记录。并非所有记录都包括收入和支出值。

我想每个组织只显示一条记录(包括regno,fyend,income),这是最新的一个有收入的记录。

我尝试过以下脚本,改编自类似的问题,但它不起作用:

SELECT ef.regno, ef.fyend, ef.income  
FROM extract_financial ef  
    INNER JOIN  
    (  
        SELECT regno, Max(fyend) AS MaxOfFyend  
        FROM extract_financial  
        GROUP BY regno  
    ) AS efx  
        ON ef.regno = efx.regno   
            AND ef.fyend = efx.MaxOfFyend  
WHERE ef.income IS NOT NULL  

查找每个[regno]的最新条目的查询有效,但问题是最新的记录从来没有任何收入......所以我想我需要一个IF那么?

非常感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

你很亲密。 WHERE子句需要进入子查询:

SELECT ef.regno, ef.fyend, ef.income  
FROM extract_financial as ef INNER JOIN  
     (SELECT regno, Max(fyend) AS MaxOfFyend  
      FROM extract_financial as ef
      WHERE ef.income IS NOT NULL
      GROUP BY regno  
     ) AS efx  
     ON ef.regno = efx.regno AND ef.fyend = efx.MaxOfFyend;