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. UDF結果エラー

    2. DBAとしてのあなたの価値を財務幹部に明確に伝える方法

    3. WinSCP を使用して FTP サーバーにアップロードするファイルを選択するためのマスクが一致するファイルがない場合、SSIS タスクに失敗します

    4. JDBCは常にMySQLテーブルの最後の行をテストしますか?