Nicht sicher, wie ein Ergebnisdiagramm von dem, was ich will, zu zeigen, aber sehen Sie unten, was ich versuche zu tun. Ich versuche, die rcnew-Spalte zu erstellen, wo ein rc in "098000" oder "999998" ist, und ändere diese in rc vom nächsten vorherigen Zahltag, wo der rc nicht in '098000' oder '999998' ist. Wie Sie sehen können, hat mein Code, wo paydate gleich ist, das ist, weil ich nicht herausfinden kann, wie man das macht. Wenn es kein gleiches Zahldatum gibt, möchte ich das rpevious nehmen. Die NULL in der unten angegebenen Ergebnisse sollten 200000. seinSuche nach Daten
ern rc paydate rcnew
123 098000 20151221 NULL
123 200000 20151214 200000
456 098000 20151221 200000
456 200000 20151221 200000
SELECT
ern, rc, paydate,
CASE WHEN fss1.rc in ('098000', '999998')
THEN (SELECT TOP 1 rc
FROM [FIN_DataMart].[dbo].[FSSpaydetl] fss
WHERE fss.ern = fss1.ern
AND rc not in ('098000', '999998')
AND fss.paydate = fss1.paydate
ORDER BY paydate DESC)
ELSE fss1.rc
END rcnew
FROM [FIN_DataMart].[dbo].[FSSpaydetl] fss1
GROUP BY ern, rc, paydate
ORDER BY ern, paydate desc
Guter Fang in seinem Code, den ich glaube, dass Sie richtig sind, dass seine Frage wohl zu schreiben bedeutet „nächste vorherige paydate wo rc nicht‚098000‘oder‚999998‘ist“, aber er tat es nicht – Matt
Ja, das ist was ich sagen wollte. Aber ich werde versuchen, äußerlich anzuwenden und zu dir zurück zu kommen. Vielen Dank! – ajc101
Das funktionierte übrigens. Vielen Dank! – ajc101