我有我無法控制源的一些糟糕的數據,它需要進入一個表的複合主鍵,看起來像這樣:我如何收拾這將違反在SQL Server 2008中的主鍵的數據?
PK_Part1, PK_Part2, StringData, DateData
我糟糕的數據有完全重複,PK重複用不同的StringData,PK與不同的DateData重複,PK與不同的StringData和DateData重複。
所以我可能會看到:
1234,1234,Blah,2011-1-1
1234,1234,Blah,2011-1-1
4321,4321,Blah,2011-1-1
4321,4321,Blah,2011-10-10
5678,5678,Blah,2011-1-1
5678,5678,Blah1,2011-1-1
8765,8765,Blah,2011-1-1
8765,8765,Blah,2011-10-10
8765,8765,Blah1,2011-10-10
我怎麼會在SQL Server 2008中打掃一下嗎?考慮到:
A)我只想要與最新日期相關的數據
B)我試圖強制與源代碼有關的字符串數據的問題,但現在更長的字符串更好,相同的長度要麼做。
C)我必須承擔的來源就沒有什麼幫助,並加載現在一切
我希望利用MERGE
但似乎做任何的「比賽之前,源表和目標表中的所有行比較'或'NO MATCH'語句,所以我得到了PK違規,並刪除了PK約束讓所有的重複。
說喲你有傳入的數據,根據你的規則是**比現有的**更好,你想刪除現有的並插入新的,是嗎? – RichardTheKiwi 2011-03-16 19:30:52
順便說一句,你錯了MERGE語句 - 它在逐行級別MERGEing,所以它可能是你想要的 – RichardTheKiwi 2011-03-16 19:32:44
@Richard aka cyberkiwi:更新是好的 - 它需要以某種方式取代它,但我我仍然會選擇SQL,所以我會很樂意爲這個過程的任何方面提供建議。謝謝! – DKnight 2011-03-16 19:35:09