Odebrać ostatnią datę w ciągu 1 roku od daty min

głosy
0

Próbuję utworzyć nową kolumnę, która zwraca ostatnią datę w ciągu 1 roku od daty pierwszego.

Przykład:

Mam następujące terminy.

5/6/2011
8/9/2011
3/5/2012
6/8/2012

Więc zapytanie należy wybrać 3/5/2012 jako dzień ostatniego w tym scenariuszu.

Utwórz 10/10/2019 o 00:55
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Jedna z metod wykorzystuje funkcje okna:

select max(dt)
from (select t.*, min(dt) over () as min_dt
      from t
     ) t
where dt < dateadd(year, 1, min_dt);

Chyba wolę podzapytanie skorelowane, ale:

select max(dt)
from t
where dt < (select dateadd(year, 1, min(dt)) from t);
Odpowiedział 10/10/2019 o 04:42
źródło użytkownik

głosy
0

Zakładamy swoją nazwę kolumny jest dta nazwa tabeli jestTbl

SELECT MAX(dt)
FROM Tbl
WHERE dt < (SELECT MIN(dt) + 365 FROM Tbl)
Odpowiedział 10/10/2019 o 01:30
źródło użytkownik

głosy
0

dość dużo można przetłumaczyć z angielskiego na specyfikację SQL dla tego:

 SELECT max(d) 
 FROM  t
 WHERE d < (SELECT DATEADD(year, 1, MIN(d)) FROM t)
Odpowiedział 10/10/2019 o 01:25
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more