Ich versuche, eine Reihe von IDs, die bestimmten Kriterien entsprechen, zu wählen, und ich habe Schwierigkeiten, die SQL-Abfrage schreiben, die zurückgeben, was ich will.SQL wählen Sie max IDs aus zwei Tabellen für eine Gruppe
Tabelle 1:
SelloutPriceID|SiteID|CountryCode|CurrencyCode|RequestID|RequestDateTime|InsertedDateTime
666|1002|BE|EUR|12504|2016-09-02 11:57:12.0000000|2016-11-14 14:27:35.980
667|1002|BE|EUR|12501|2016-09-02 11:57:12.0000000|2016-11-14 14:27:36.600
668|1002|BE|EUR|12507|2016-09-02 11:57:12.0000000|2016-11-14 14:27:36.963
Tabelle 2:
SelloutPricesAuditID|RequestID|SiteID|CountryCode|InsertedDateTime
1|128|1002|BE|2016-11-14 16:55:29.543
2|12507|1002|BE|2016-11-14 17:07:16.633
ich zu einer Gruppe von SITEID und auf beiden Tabellen Ländercode versuche dann erhalten nur die max Anforderungs-ID für diese Gruppe. Fügen Sie dann die Tabellen zusammen, die auf der Site-ID, dem Ländercode und der maximalen Anforderungs-ID übereinstimmen.
Wenn die linke Tabellenzeile nicht in der rechten Tabelle ist, möchte ich sie zurückgeben. Wenn die Anfrage-ID der rechten Tabelle nicht gleich der MaxRequestID der linken Tabelle ist, möchte ich diese Zeile zurückgeben.
Dies ist, was ich bisher:
SELECT s.*, spa2.*
FROM [SPS_selloutprices].[SelloutPrices] as s WITH (NOLOCK)
inner join (select sp.SiteID, sp.CountryCode, Max(sp.RequestID) as maxrequestid
from SPS_selloutprices.SelloutPrices sp
group by sp.SiteID, sp.CountryCode
) s2
on s2.SiteID = s.SiteID and s.CountryCode = s2.CountryCode and s2.maxrequestid = s.RequestID
full join (select spa.SiteID, spa.CountryCode, MAX(spa.RequestID) as maxrequestid
from sps_pricealerts.SelloutPricesAudit spa
group by spa.SiteID, spa.CountryCode
) spa2
on s.SiteID = spa2.SiteID and s.CountryCode = spa2.CountryCode and s2.maxrequestid = spa2.maxrequestid
denken, wenn Ihre vollständigen Rückkehr nur die rechte Hand Datensatz beitreten, dann s2.maxrequestid NULL ist - so auch diese Zeile nicht INNER JOIN zurück und verschwindet - wenn das ein Problem ist - möchten Sie vielleicht überprüfen – Cato