I need to update a FINAL table which has ID and Dates using ID & Dates in DATA table. I'm using SQL Server. Imagine foreign currency to USD conversion. A security may trade on Monday...Sunday, but the forex rates may be available from Monday..Friday only. So the Saturday & Sunday closing price would use Friday's exchange rate. Thanks!
CREATE TABLE #Data (Date datetime, ID varchar(50), Value float)
INSERT INTO #Data (Date, ID, Value) SELECT '12/5/2013', 'ABC', 100
INSERT INTO #Data (Date, ID, Value) SELECT '12/6/2013', 'XYZ', 50
INSERT INTO #Data (Date, ID, Value) SELECT '12/8/2013', 'XYZ', 150
CREATE TABLE #Final (Date datetime, ID varchar(50), Value float)
INSERT INTO #Final (Date, ID) SELECT '12/5/2013', 'ABC'
INSERT INTO #Final (Date, ID) SELECT '12/7/2013', 'XYZ'
INSERT INTO #Final (Date, ID) SELECT '12/8/2013', 'XYZ'
SELECT * FROM #Data
UPDATE #Final
SET Value = #Data.Value
FROM #Final
JOIN #Data ON #Data.ID= #Final.ID AND #Data.Date<= #Final.Date --WRONG
SELECT * FROM #Final
DROP TABLE #Data DROP TABLE #Final
Desired output in #Final
2013-12-05 00:00:00.000 | ABC | 100
2013-12-07 00:00:00.000 | XYZ | 50
2013-12-08 00:00:00.000 | XYZ | 150