Ho una tabella in SQL Server che contiene dati organizzati da BusinessDataDate. BusinessDataDate è un solo Date (nessun componente orario) e viene popolato solo nei giorni lavorativi. per esempio. non nei fine settimana o nei giorni festivi.Qual è il modo migliore per trovare la data "next but one latest" in SQL?
Perché non c'è nessun ordine specifico per questo, voglio trovare il date before the current max date
Questa query funziona, e posso impostare i valori in variabili locali - ma ci si sente come se ci deve essere un modo più pulito?
SELECT MAX(BusinessDataDate) FROM myTable
WHERE BusinessDataDate < (SELECT MAX(BusinessDataDate) FROM myTable)
Ogni data avrà più righe nella tabella - il numero esatto non è prevedibile.
L'approccio è corretto. L'aggiunta di una clausola where a main e subquery da filtrare solo negli ultimi x giorni potrebbe migliorare le prestazioni. –
Potrei provare che ... tuttavia, lavorare in Medio Oriente è un po 'vago da indovinare. Eid può essere 3-6 giorni, e se coincide con i fine settimana, allora in modo affettivo potresti avere un intervallo di 10 giorni. – BlueChippy