Ich habe eine Datenbank von Kontakten, die sich für eine Reihe von Veranstaltungen registriert haben. Die Datenbank enthält auch eine Tabelle mit Adressinformationen. Häufig haben einzelne Kontakte mehrere Adressdatensätze.Wie min datediff Wert auf einem Datensatz zu wählen
Ich brauche eine Abfrage, die die Buchung eines Individuums zusammen mit der Postleitzahl aus ihrem letzten Adressdatensatz zurückgibt (relativ zum Datum des Ereignisses).
Ich versuche, min (DATEDIFF) in der Abfrage unten zu verwenden, aber obwohl es den Datumsunterschied zwischen der Ereignisbuchung und der Adressdatensatzerstellung korrekt berechnet, gibt die Abfrage immer noch doppelte Ergebnisse, wo eine Person mehr als eins hat Adressdatensatz. Schätze
wenn jemand bitte raten, wo ich unten falsch in der Abfrage werde, oder beraten auf einem besseren Weg, um das Ergebnis zu erhalten:
SELECT ep.EVENTPLACENO, ad.POSTCODE, min(DATEDIFF(dd,ep.CREATIONDATE,ad.CREATIONDATE)) as datediff
FROM EVENTPLACE as ep
LEFT OUTER JOIN EVENTMODULE as em ON em.EVENTMODULENO=ep.EVENTMODULENO
LEFT OUTER JOIN ADDRESS as ad ON ad.CONTACTNO=ep.CONTACTNO
WHERE em.EVENTMODULENO = '1111111-2222222-3333333-4444444'
GROUP BY ep.EVENTPLACENO, ad.POSTCODE
ROW_NUMBER() OVER hinzufügen (PARTITION BY ep.EVENTPLACENO, ad.POSTCODE ORDER BY DATEDIFF) (dd, ep.CREATIONDATE, ad.CREATIO NDATE)) wie rown dann die Abfrage als eine abgeleitete Abfrage abfragen, Auswahl rown = 1 – Cato