Во-первых, независимо от того, как вы его нарезаете, вам нужен уникальный ключ. Это может быть комбинация столбцов, но у вас обязательно должны быть уникальные средства идентификации каждой строки. Без этого ваш лучший выход - добавить такое ограничение. В дополнение к этому ограничению, этот тип запроса лучше всего обслуживать, также имея единственный уникальный столбец. Однако, если у вас нет такого столбца, вы можете создать его из столбцов, которые содержат уникальный ключ, объединяя их вместе:
Select T1.account, T1.phone, T1.subaccount, T1.locationId....
From "Table" As T1
Where (Cast(T1.UniqueCol1 As varchar(100))
+ "|" + Cast(T2.UniqueCol2 As varchar(100)
... ) = (
Select Min( Cast(T2.UniqueCol1 As varchar(100))
+ "|" + Cast(T2.UniqueCol2 As varchar(100))
...
)
From "Table" As T2
Where T2.account = T1.account
And T2.phone = T1.phone
)
В этом случае UniqueCol1
представляет один из столбцов уникального ключа, UniqueCol2
представляет следующий и т. Д. Это не будет быстрый запрос с помощью любых средств. Наличие единственного столбца, гарантирующего уникальность, значительно упростит эту проблему. С этим вы можете сделать что-то похожее на решение Майка М:
Select T1.account, T1.phone, T1.subaccount, T1.locationId....
From "Table" As T1
Where UniqueCol = (
Select Min( T2.UniqueCol )
From "Table" As T2
Where T2.account = T1.account
And T2.phone = T1.phone
)
Важным моментом, который следует здесь подчеркнуть, является то, что в обоих решениях выше «первое» определяется просто наименьшим из найденных значений отсортированного ключа. Если «first» нужно определить по чему-то другому, например, по столбцу datetime, вы должны указать это в своем сообщении.
EDIT
Учитывая ваше добавление, что это импорт, самое простое решение - добавить автоматически увеличивающийся столбец в вашу промежуточную таблицу. В SQL Server это будет столбец IDENTITY, но другие продукты баз данных имеют аналог. Если вы сделаете это, то последнее решение, которое я представил выше, поможет (просто замените UniqueCol на имя вашего столбца Identity).