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

Най-добрият начин за интерполиране на стойности в SQL

Нещо подобно (коригирано):

SELECT CASE WHEN next.Date IS NULL  THEN prev.Rate
            WHEN prev.Date IS NULL  THEN next.Rate
            WHEN next.Date = prev.Date  THEN prev.Rate
              ELSE ( DATEDIFF(d, prev.Date, @InputDate) * next.Rate 
                   + DATEDIFF(d, @InputDate, next.Date) * prev.Rate
                   ) / DATEDIFF(d, prev.Date, next.Date)
       END AS interpolationRate 
FROM
  ( SELECT TOP 1 
        Date, Rate 
    FROM Rates
    WHERE Date <= @InputDate
    ORDER BY Date DESC
  ) AS prev
  CROSS JOIN
  ( SELECT TOP 1 
        Date, Rate 
    FROM Rates
    WHERE Date >= @InputDate
    ORDER BY Date ASC
  ) AS next


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуване на SQL2008 RDL файл в SQL2005

  2. Как мога да уведомя моята програма, когато базата данни е актуализирана?

  3. Има ли начин да получите различни резултати за една и съща SQL заявка, ако данните останат същите?

  4. T-SQL Pivot/Unpivot(Transpose) заглавки на колони, необходими като редове с данни

  5. Как да съхранявате изображение в колоната с таблици на база данни на SQL Server