2017-09-13 1 views
0

J'ai une table avec trois morceaux de données, FacilityName, DateLastVerified, & Intensité. Je veux pouvoir extraire les enregistrements avec le DateLastVerified le plus récent. Lorsque le DateLastVerified est le même, je veux qu'il sélectionne l'enregistrement avec l'intensité la plus élevée.Comment obtenir les données les plus récentes?

|FacilityName         | DateLastVerified | Intensity 
|Nemours/Alfred I. duPont Hospital for Children | 2014-03-01  | 16 
|Boston Children's Hospital      | 2015-11-29  | 6 
|Boston Children's Hospital      | 2017-04-01  | 3 
|Tufts Medical Center       | 2017-04-01  | 3 
|Tufts Medical Center       | 2017-04-01  | 6 

Donc, pour le tableau ci-dessus que je voudrais revenir la deuxième entrée de l'hôpital pour enfants de Boston et la deuxième entrée pour Tufts Medical Center. Comment est-ce que j'écrirais ceci?

+1

Tag votre question avec la base de données que vous utilisez. Pourquoi rendriez-vous deux disques plutôt que le seul disque Tufts? Il a la plus haute intensité. –

+0

@GordonLinoff C'est ainsi que la table est configurée dans la base de données dans laquelle je travaille. C'est une base de données SQL Server. – DCity35

Répondre

1

Je veux être en mesure de tirer les enregistrements avec le plus récent DateLastVerified. Lorsque le DateLastVerified est le même, je veux pour sélectionner l'enregistrement avec l'intensité la plus élevée.

Sur la base de cette description, vous pouvez obtenir un enregistrement à l'aide order by et fetch first 1 row only:

select t.* 
from t 
order by DateLastVerified desc, Intensity desc 
offset 0 row fetch first 1 row only; 

Ou pour SQL Server:

select top 1 t.* 
from t 
order by DateLastVerified desc, Intensity desc; 
+0

FYI quand j'essaye de courir cela (chargé un CTE avec les données) il erreurs 'Msg 153, niveau 15, état 2, ligne 12 Utilisation non valide de l'option d'abord dans l'instruction FETCH.» Je pense que vous devez inclure un 'offset' pour utiliser un' fetch' – Xedni

+0

@Xedni. . . Quand j'ai répondu à la question, il n'était pas étiqueté "sql-server". La clause 'offset' est facultative dans d'autres bases de données. –