Vyzvednout poslední den do 1 roku ode min

hlasů
0

Snažím se vytvořit nový sloupec, který vrací poslední den do 1 roku od prvního dne.

Příklad:

Mám následující termíny.

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

Takže otázka by si měli vybrat 3/5/2012 jako k poslednímu dni v tomto scénáři.

Položena 10/10/2019 v 00:55
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
0

Jedna metoda používá okno funkce:

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

Myslím, že bych raději korelační poddotaz, i když:

select max(dt)
from t
where dt < (select dateadd(year, 1, min(dt)) from t);
Odpovězeno 10/10/2019 v 04:42
zdroj uživatelem

hlasů
0

Předpokládejme, že váš název sloupce je dti název vaší tabulky jeTbl

SELECT MAX(dt)
FROM Tbl
WHERE dt < (SELECT MIN(dt) + 365 FROM Tbl)
Odpovězeno 10/10/2019 v 01:30
zdroj uživatelem

hlasů
0

Můžete si do značné míry přeložit anglický spec do SQL pro tento:

 SELECT max(d) 
 FROM  t
 WHERE d < (SELECT DATEADD(year, 1, MIN(d)) FROM t)
Odpovězeno 10/10/2019 v 01:25
zdroj uživatelem

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