SQL查询 - 从一组客户端过滤最大日期

时间:2016-04-19 11:48:51

标签: mysql sql

我目前有两张桌子;客户和纳税申报表

Customers

Sysref(PK) FullName
1          ABC Ltd
2          XYZ Ltd

Tax Returns

CustomerSysref(FK) TaxReturnYear
1                  2016
1                  2015

作为查询的一部分,我将退税纳入客户表。

FROM CUSTOMERS CUS
LEFT JOIN TaxReturns CITR ON CITR.ClientSysRef = CUS.SYSREF

我需要查询最大日期的结果。以上面的例子为例,我需要查询输出2016年的TaxReturnYear。有人可以指导我吗?

如果我想添加一个where子句,当SubmissionDate等于1900时,该子句不会显示该行?例子;

Tax Returns

CustomerSysref(FK) TaxReturnYear SubmissionDate
1                  2016          1900
1                  2015          2016 

WHERE CITR.SubmissionDate != '1900'

结果将是;

2015尽管2016年规模较大,但SubmissionDate为1900年。

需要显示最终结果;

Sysref&表客户的FullName

表退税的TaxReturnYear和SubmissionDate

1 个答案:

答案 0 :(得分:2)

如果我做对了

...
FROM CUSTOMERS CUS
LEFT JOIN 
  (SELECT CustomerSysref, max(TaxReturnYear) as TaxReturnYear 
   FROM TaxReturns
   WHERE SubmissionDate != '1900'
   GROUP BY CustomerSysref ) AS CITR
ON CITR.ClientSysRef = CUS.SYSREF
-- added to get submissionDate
LEFT JOIN TaxReturns tr2 
ON CITR.CustomerSysref = tr2.CustomerSysref AND CITR.TaxReturnYear = tr2.TaxReturnYear 

根据问题编辑进行了更正。