我有一個表中的SQL Server 2000與類似於以下數據:選擇在SQL Server中優先
ReferenceNumber ReferenceValue
00001 Not assigned
00002 Not assigned
00002 ABCDE
,其中每個ReferenceNumber可以在表中出現多次,無論是與「不是一個ReferenceValue分配'或一個真實的ReferenceValue。
我想將數據轉儲到清理過的表中,每個ReferenceNumber只有一行,如果存在則返回一個真正的ReferenceValue;如果沒有真正的ReferenceValues,則拋棄'未分配'。
我可以看到如何使用兩個查詢做到這一點:
SELECT TOP 1 ReferenceNumber, ReferenceValue
INTO clean
FROM duplicates
WHERE ReferenceValue <> 'Not assigned'
INSERT INTO clean(ReferenceNumber, ReferenceValue)
SELECT TOP 1 ReferenceNumber, ReferenceValue
WHERE ReferenceValue = 'Not assigned'
AND ReferenceNumber NOT IN (SELECT ReferenceNumber FROM clean)
但我想一定有更好的辦法。有任何想法嗎?
對於此特定問題,ReferenceNumber將具有「未分配」或具有唯一的ReferenceValue,因此關係沒有問題。 – taserian 2009-10-22 19:39:42
@taserian:刪除我的集合 – gbn 2009-10-22 19:42:28
我保留了集合,因爲即使RefNumber可以有一個真實的RefValue,RefNumber-RefValue對可以在表中多次出現。 – taserian 2009-10-22 19:57:57