Mam tabelę w SQL Server, który przechowuje dane organizowane przez BusinessDataDate. BusinessDataDate to tylko data (brak komponentu czasowego) i jest wypełniany tylko w dni robocze. na przykład nie w weekendy ani święta.Jaki jest najlepszy sposób na znalezienie daty "następny, ale jeden najnowszy" w SQL?
Ponieważ nie ma konkretnego celu, chcę znaleźć date before the current max date
Ta kwerenda działa i mogę ustawić wartości do zmiennych lokalnych - ale wydaje się, jakby nie musi być bardziej przejrzysty sposób?
SELECT MAX(BusinessDataDate) FROM myTable
WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)
Każda data ma wiele wierszy w tabeli - dokładna liczba nie jest przewidywalna.
Twoje podejście jest w porządku. Dodanie klauzuli where do głównej i podkwerendy, aby filtrować tylko przez ostatnie x dni, może poprawić wydajność. –
Mogę spróbować tego ... jednakże, praca na Bliskim Wschodzie jest trochę niejasna do odgadnięcia. Eid może trwać od 3 do 6 dni, a jeśli zbiega się z weekendami, to z rozmysłem możesz mieć 10-dniowy zakres. – BlueChippy