Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

W jaki sposób można użyć języka SQL do zwrócenia wartości dla określonej daty lub najbliższej daty

Możesz spróbować czegoś takiego:

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')

Edytuj Aby uzyskać ostatni rekord dla każdego miesiąca, grupy i identyfikatora, możesz spróbować tego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Scal wiele rekordów w jeden wiersz w tabeli

  2. Zaktualizuj za pomocą instrukcji przypadku

  3. Jak używać zmiennej tabeli w dynamicznej instrukcji sql?

  4. Sprawdź, czy tabela ma DEFAULT ograniczenie w SQL Server za pomocą OBJECTPROPERTY()

  5. Laravel do SQL Server (sqlsrv). [PDOException] nie można znaleźć sterownika