Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara terbaik untuk menginterpolasi nilai dalam SQL

Kira-kira seperti ini (dikoreksi):

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. SQl 2008 kinerja lintas basis data pada mesin fisik yang sama dan instance server yang sama

  2. Cari kueri di beberapa kolom tabel?

  3. Bisakah kueri berparameter ditangkap sepenuhnya menggunakan DBCC INPUTBUFFER?

  4. Output data dari bulan ini?

  5. Cara Menginstal SQL Server di Mac