sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan du använda SQL för att returnera värden för ett angivet datum eller närmaste datum

Du kan prova något i stil med detta:

SELECT date, grp, id
    , (SELECT TOP 1 price
       FROM price_table P2
       WHERE P1.id = P2.id
       AND P1.grp = P2.grp
       AND P2.date <= P1.date
       ORDER BY P2.date DESC)
FROM price_table P1
WHERE P1.date IN ('12/31/2009', '11/30/2009')
AND P1.grp IN ('Group1')

Redigera För att få den sista posten för varje månad, grupp och id kan du prova detta:

SELECT date, grp, id, price
FROM price_table P1
WHERE P1.date = (SELECT MAX(date)
                 FROM price_table P2
                 WHERE P1.grp = P2.grp
                 AND P1.id = P2.id
                 AND YEAR(P1.date) = YEAR(P2.date)
                 AND MONTH(P1.date) = MONTH(P2.date))
AND P1.grp In ('Group1')


  1. SQL Server Passthrough-fråga som grund för en DAO-postuppsättning i Access

  2. SQL Server Hög tillgänglighet:Lägg till ny disk till en befintlig failover-klusterinstans

  3. Versaler av dag- och månadsnamn vid formatering av datum i Oracle

  4. En översikt över strömmande replikering för TimescaleDB