sql >> Databáze >  >> RDS >> Sqlserver

Nejlepší způsob, jak interpolovat hodnoty v SQL

Něco jako toto (opraveno):

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. Jak ukládat události publikování MQTT Mosquitto do MySQL?

  2. lze to provést rychleji s velkým množstvím dat [MySQL]

  3. PHP PDO Update Statement nefunguje

  4. Problém s přidáváním cizího klíče pomocí Alter Table se stávající databází MYSQL – nelze jej přidat! Pomoc!