Учитывая тот факт, что у вас есть три строки с одинаковыми DriverMobNo
- какой из этих трех вы хотите, когда делаете SELECT
?? Произвольный? Самый последний? Самый старый?
Можно, конечно, сделать
SELECT DISTINCT DriverMobNo FROM dbo.Drivers WHERE IsDeleted = 0
и получить эти различные DriverMobNo
значения - но если вы хотите, чтобы все столбцы в SELECT, вы должны быть более конкретным, какой из трех строк с DriverMobNo = 9566643707
вы хотите получить.
UPDATE: Ok, вы хотите старейшей один - один из способов сделать это с помощью CTE (Common Table Expression):
WITH Drivers AS
(
SELECT
DriverId, DriverName, DriverMobNo, CreatedDate,
ROW_NUMBER() OVER (PARTITION BY DriverMobNo ORDER BY CreatedDate) 'RowNo'
FROM dbo.Drivers
WHERE IsDeleted = 0
)
SELECT DriverId, DriverName, DriverMobNo, CreatedDate
FROM Drivers
WHERE RowNo = 1
, которые должны "раздела" Ваши данные по DriverMobNo
и начать подсчет вверх, порядок по дате создания, поэтому запись RowNo = 1 всегда будет самой старой для каждого DriverMobNo
.
«Я хочу выбрать * на основе отдельной колонки DriverMobNo» - не уверен, что вы имеете в виду. Можете ли вы привести пример таблицы результатов, которую вы хотите получить? –
@joe Я хочу удалить строку, которая содержит 'DriverMobNo' в предыдущих строках ... –
Вы хотите, чтобы вы вернули только один драйвер для каждого DriverMobNo? Итак, Chandru и Uday1 не будут возвращены, потому что у вас уже есть драйвер (Uday) для этого DriverMobNo? –