我想要一個更新臨時表的基本更新過程,並通過PrimID和myDates對其進行排序,然後更新永久表。數據結構如下所示:來自多個列csv的動態更新表
PrimID MyDates Price
1 1/1/2014 1
1 1/2/2014 2
2 1/1/2014 11
2 1/2/2014 12
3 1/1/2014 21
3 1/2/2014 22
csv文件看起來完全一樣,只是沒有標題列名稱。這裏是我的代碼至今:
CREATE Table #TempT
(
PrimID Int,
myDate Date,
myPrice Float
);
BULK
INSERT #TempT
FROM 'D:\MyWerk\SQL\TEST_dPrice_Data.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
Select * From #TempT
Order by PrimID,myDate
Drop Table #TempT
CSV文件將只有一個「更新」文件與新的,最新的日期的數據,但可以認爲,在永久表已拍攝日期的數據。什麼是缺少的,我想要的是有序的#TempT永久表的更新,按PrimID排序,然後按順序myDates(最舊的日期到最新),但如果有csv中的myDates數據,已經在永久表中,我希望csv最新數據也覆蓋永久文件中的價格數據。另外,有沒有更好的方式按時間順序獲取數據,而不是使用order by?
我使用SQL Server 2012.
非常感謝。
我很難理解你在做什麼之後,你想根據'primid更新'mydate'和'myprice'值',但只有價格,如果'primid'和'mydate'在兩個表中? – 2014-09-18 19:18:34
更新查詢中很少需要order by子句。根據你試圖達到的目標,sql max()函數可能是合適的。 – 2014-09-18 19:37:07