2017-10-10 1 views
1

J'ai une table OrdersSélectionnez les lignes par date et exclure la ligne qui a le dernier enregistrement

Name    DateOrdered 
louie   01/50/2017 
jonathan   02/06/2016 
prince   05/23/2016 
louie   07/02/2016 

je veux sélectionner les enregistrements par année, par exemple 2016, mais je veux que le résultat de montrer que jonathan et prince parce que louie a un dernier record en 2017, comment interroger cela? Merci d'avance.

+0

double possible de [Comment CHOISIR OU INEXISTANT LINQ?] (Https://stackoverflow.com/questions/9031008/how-to-select-where-not-exist-using-linq) – maSTAShuFu

+0

Je dois le vérifier dans la même table –

Répondre

0

Avec sous-requête. Par exemple, dans Transact-SQL (sybase ase)

Select from orders a 
Where DateOrdered != (select min(dateordered) from orders b 
         where convert(char(04),dateordered)=convert(char(04),a.dateordered)) 

La fonction de conversion est de comparer une partie de l'année à partir du champ dateordered

J'espère que ce sera utile

0

Si vous triez la requête par date ci-dessous requête peut supprimer la ligne supérieure:

declare @Total INT; 
declare @requiredRows INT; 
Select @Total= Count (*) From Orders 
SET @requiredRows = @Total -1; 

Select * From(
Select TOP (@requiredRows) * From Orders 
Order By DateOrdered ASC) As tbl 
Order By DateOrdered DESC 

Vous pouvez utiliser la fonction « aN » pour extraire année de la colonne dateOrdered

2

Essayez l'exemple de requête ci-dessous.

SELECT * from Orders WHERE YEAR(DateOrdered) = '2016' AND name != 
'louie';