У меня есть таблица в SQL Server 2000 с данными, похожими на следующее:Выбор с предпочтением в SQL Server
ReferenceNumber ReferenceValue
00001 Not assigned
00002 Not assigned
00002 ABCDE
, в котором каждый ReferenceNumber может появляться несколько раз в таблице, либо с ReferenceValue из «Не присваивается "или true ReferenceValue.
Я хочу сбросить данные в очищенную таблицу только с одной строкой на номер ReferenceNumber и true 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)
, но я думаю, что должно быть лучше. Есть идеи?
Для этой конкретной проблемы ссылочный номер будет либо «Не назначен», либо имеет уникальный ReferenceValue, поэтому проблем со связями нет. – taserian
@taserian: удалил мой агрегат – gbn
Я сохранил совокупность, поскольку хотя RefNumber может иметь один истинный RefValue, эта пара RefNumber-RefValue может появляться несколько раз в таблице. – taserian