Étant donné que vous avez trois lignes avecidentiques- lequel de ces trois voulez-vous en faisant votre SELECT
?? Un arbitraire? Le plus récent? Le plus ancien ??
Vous pouvez certainement faire
SELECT DISTINCT DriverMobNo FROM dbo.Drivers WHERE IsDeleted = 0
et obtenir ces DriverMobNo
distinctes valeurs - mais si vous voulez avoir toutes les colonnes de votre SELECT, vous devez être plus précis quant à laquelle des trois lignes avec DriverMobNo = 9566643707
vous voulez récupérer.
MISE À JOUR: Ok, vous voulez plus vieux - une façon de faire est d'utiliser un CTE (expression de table commune):
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
qui devrait "partition" de vos données par DriverMobNo
et commencer à compter haut, ordre par date de création, donc l'entrée RowNo = 1 sera toujours la plus ancienne pour chaque DriverMobNo
.
"Je veux sélectionner * basé sur une colonne DriverMobNo distincte" - je ne suis pas sûr de ce que vous voulez dire. Pouvez-vous donner un exemple de la table de résultats que vous voulez obtenir? –
@joe je veux enlever une rangée qui contient 'DriverMobNo' dans les rangées précédentes ... –
Voulez-vous dire que vous voulez renvoyer un seul conducteur pour chaque DriverMobNo? Donc, Chandru et Uday1 ne seraient pas retournés, parce que vous avez déjà un pilote (Uday) pour ce DriverMobNo? –