2016-12-06 46 views
0

我的SQL技能非常基础,但我试图为小企业设置非盈利数据库。 我有财务数据的表格(extract_financial):只显示访问查询中具有特定字段数据的最后一条记录

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

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

我想每个组织只显示一个记录(包括regno,fyend,收入),最近一个有任何收入的记录。

我试过下面的脚本,改编自一个类似的问题,但它没有工作:

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那么?

希望你的帮助,谢谢!

回答

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; 
+0

谢谢戈登,并对迟到的反应表示歉意。在尝试这个脚本时,我被要求输入ef.income和ef.MaxOfFyend的参数。有什么想法吗? – MayaR

+0

编辑完成后马上工作 - 非常感谢您的帮助@Gordon! – MayaR