0
votes

SQL Server: Sélectionnez l'endroit où le champ peut ne pas contenir de valeur

Je sais que le titre est vague mais je ne suis pas sûr de la phraser.

J'ai une table simple (voir l'image ci-dessous).

Je dois écrire une déclaration SQL qui Récupérez une seule dossier représentant chaque [unité_id] et [iSactive] [isactive] est le max pour ce particulier [unit_id] .

 Entrez la description de l'image ici

Idéalement, le résultat devrait ressembler à ceci (remarque que unité_id = 2 n'a pas isactive = 1 ):

 Entrez la description de l'image ici

faire un simple [ Isactive]> 0 est pas ce que je recherche car alors unité_id = 2 ne serait jamais apparu dans l'enregistrement.

Voici ce que j'ai essayé (échoué): Xxx

Toute aide sur la question est appréciée!


0 commentaires

3 Réponses :


2
votes

avec n'existe pas : xxx

ou avec rang_number () : xxx


0 commentaires

1
votes

Le problème avec votre code est la sous-requête n'utilise pas d'alias pour la test de test . Devrait être xxx


2 commentaires

J'ai essayé votre code (premiers à: max (t. [T. ISACTIVE])) mais il ne révèle toujours que des enregistrements où is_active = 1


Voir la réponse modifiée avec des alias pour les deux usages de table.



1
votes

Comme @forpas dit, je pense que la meilleure option est la suivante: xxx

La seule différence est la clause par , qui doit avoir ces colonnes unité_id, isactif .

espère que cela peut vous aider.


0 commentaires