Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tốt nhất để nội suy các giá trị trong SQL

Một cái gì đó như thế này (đã sửa chữa):

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. truy xuất bản ghi gần đây nhất cho mỗi khách hàng

  2. SQL Server - Tạo một bản sao của bảng cơ sở dữ liệu và đặt nó vào cùng một cơ sở dữ liệu?

  3. CHÈN SỐ LƯỢNG LỚN từ chuỗi được phân tách bằng dấu phẩy

  4. Chọn một cột nếu cột khác rỗng

  5. Ai làm @@ OPTIONS và sp_configure cung cấp đầu ra khác nhau?