2016-04-19 6 views
0

Ich habe derzeit zwei Tabellen; Kunden und SteuererklärungenSQL Query - Filter Largest Date von einer Gruppe von Clients

Customers:

Sysref(PK) FullName 
1   ABC Ltd 
2   XYZ Ltd 

Tax Returns:

CustomerSysref(FK) TaxReturnYear 
1     2016 
1     2015 

Im Rahmen der Abfrage I Tax Returns to Customer Tabelle am Beitritt.

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

Ich muss das Ergebnis des größten Datums abfragen. Im obigen Beispiel brauche ich die Abfrage, um das TaxReturnYear für 2016 auszugeben. Kann mir bitte jemand eine Anleitung geben?

Wenn ich eine Where-Klausel hinzufügen möchte, die die Zeile nicht anzeigen wird, wenn das SubmissionDate gleich 1900 ist? Beispiel;

Tax Returns 

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

WHERE CITR.SubmissionDate != '1900' 

Das Ergebnis wäre;

2015, obwohl 2016 ist größer, aber die SubmissionDate ist 1900.

End Ergebnis anzuzeigen muss;

Sysref & Fullname aus der Tabelle Kunden nach der Frage bearbeiten

TaxReturnYear und SubmissionDate aus der Tabelle Steuererklärungen

+2

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis hinzu! – jarlh

+0

Returning SubmissionDate ist ein etwas anderes Problem. Zuerst welche sollte in diesem Fall zurückgegeben werden? 'CustomerSysref (FK) TaxReturnYear SubmissionDate' ' 1 2016 1900' '1 2014 2016' ' 1 2014 2015' – Serg

+0

'1 2014 2016 und 1 2014 2015' sind beide gut, da es nicht mehr als ein TaxReturn sein sollte im selben Jahr – Mario

Antwort

2

Wenn ich es richtig

... 
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 

korrigiert.

+0

Danke für den Code, arbeitete wie ein Charme :) Ich muss Zeilen ausfiltern, wenn das SubmissionDate gleich 1900 ist. Ich habe die ursprüngliche Frage oben aktualisiert. Könntest du mich dabei unterstützen? – Mario

+0

Danke nochmal für das Update. Wie kann ich das SubmissionDate anzeigen? Ich habe die obige Frage mit dem Endergebnis aktualisiert. Könntest du mich dabei unterstützen? – Mario

+0

Siehe aktualisierte Antwort. – Serg