mise à jour p>
Je pense qu'il y a une solution plus facile qui sauvera également le temps de traitement. Je pourrais simplement supprimer tous les enregistrements qui ont Statut = 'Traditionné' et Status = 'En cours' avant terminé. P>
De cette façon, je n'ai que simplement à interroger à la première_value où statut = "en cours". P>
Comment j'écrirais-je? P>
Je travaille sur une base de données. J'ai une table avec des archives comme suit les citations décrivant la saisie des colonnes, la mise au point de ma question est à jour et à statut p>
Lieu "NC, SC, NJ, etc." P> LI>
ville "Carthage, Myrtle Beach, etc." P> Li>
la date J'ai besoin de mon J'ai joint un visuel de ce dont je parle. J'ai besoin de ma requête pour retourner la 3ème boîte de la gauche et non la première. P>
date code> colonne et Statut code> Les colonnes sont mises à jour régulièrement. P>
Sélectionner une requête distincte code> pour renvoyer l'enregistrement d'ici la première date lorsque la colonne d'état = "en cours". Cette partie, je sais faire. Toutefois, chaque fois qu'une colonne d'état des enregistrements va à "Terminé" un jour et qu'un nouvel enregistrement est ajouté ultérieurement avec l'état en cours, je vois le premier enregistrement dans lequel le champ d'état = "en cours". P>
3 Réponses :
Vous pouvez utiliser une sous-requête qui renvoie la date minimale lorsque l'état était 'en cours code> et après quoi aucun enregistrement avec statut terminé code> existe, comme:
Cela n'a pas fonctionné, les résultats que je tire sont des enregistrements qui n'ont que plusieurs statuts «en cours». L'autre partie que j'ai oubliée de mentionner est que chaque enregistrement initial ne commencera pas par "Terminé". Et si je supprime tous les enregistrements du dernier statut terminé pour cet ensemble d'enregistrements? Je traite les données des lots, de sorte qu'il ne serait donc pas difficile d'obtenir un agent SQL de courir pour moi.
@JT: Il est difficile de comprendre exactement ce que vous attendez ... veuillez mettre à jour votre question avec des données d'échantillonnage et une sortie attendue afin que nous puissions essayer de fournir une réponse appropriée.
Pour paraphraser ...
Nom, emplacement, ville code> combinaison? LI>
- Cet enregistrement doit être en soi
Statut = 'en cours' code> mais ne pas avoir d'enregistrement immédiatement avant avec Statut = "en cours" code>. Li>.
- de ces enregistrements potentiels, vous voulez le dernier. li>
ul>
Utilisation de fonctions analytiques Vous pouvez le faire ... p> xxx pré> Bien que ce soit un code plus long que l'utilisation d'un n'existe pas () code > Subquier en corrélation, cela devrait minimiser le coût à exécuter, de même potentiellement plus rapide. P> Pour une performance maximale, vous pouvez avoir un seul index sur ... P>
CREATE INDEX
mytable_nlcds
ON mytable (
name,
location,
city,
date DESC,
status
)
donc, p>
J'ai essentiellement créé deux tables. Une avec toutes en cours et une autre avec toutes complétées. P>
Ensuite, j'appuie simplement de nouveaux enregistrements à ma table rempli, puis exécutez une création à la base de SELECT * Last_Value ([T1.Date]). Ensuite, j'exécute une suppression gauche rejoignez la table en cours sur la table complète par nom et ville, où T1.Date> T2.Date. P>
Cela a résolu le problème pour moi. C'est une étape supplémentaire, mais il court rapidement et gardera ma taille de données faible. p>
Merci à tous pour vos suggestions! P>
Peut-être correspondant contre
max (date) code>.Veuillez lire pour quelques conseils sur l'amélioration de votre question.
Stackoverflow.com/help/how-to-ask