Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как можете да използвате SQL, за да върнете стойности за определена дата или най-близка дата <определена дата?

Можете да опитате нещо подобно:

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

Редактиране За да получите последния запис за всеки месец, група и идентификатор, можете да опитате това:

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. @@DATEFIRST – Вземете първия ден от седмицата в SQL Server

  2. Използване на съхранени процедури на SQL Server от Python (pyodbc)

  3. SQL, избор между дата/час

  4. Разделяне на двойки стойности и създаване на таблица с помощта на UDF

  5. Sql връзката чака 15 секунди въпреки 3 секунди изчакване в низа за връзка