我在 SQL Server 2000 中有一个表,其数据类似于以下内容:
ReferenceNumber ReferenceValue
00001 Not assigned
00002 Not assigned
00002 ABCDE
其中每个 ReferenceNumber 可以在表中出现多次,其 ReferenceValue 为“未分配”或为 true ReferenceValue。
我想将数据转储到一个清理表中,每个 ReferenceNumber 只有一行,如果存在则为 true ReferenceValue,如果没有 true 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)
但我认为必须有更好的方法。有任何想法吗?