Voici la situation:SQL Server - Sélection disque le plus récent pour générer une liste des changements
J'ai une base de données de « tickets », et nous trace des modifications aux billets à chaque fois qu'ils sont enregistrés. Je cherche en particulier à des changements d'état, qui permettent de suivre le format suivant:
STATUT: {DE}: {TO}
avec {FROM} et {TO} changer les statuts respectifs. Ce que je dois faire est de générer des nombres par semaines du nombre de billets qui étaient 'ouverts' (c'est-à-dire en état de brouillon) à la fin d'une semaine donnée, disons pour les 12 dernières semaines. Cependant, vous n'êtes pas limité à «fermer» un ticket, puis à le rouvrir ou à effectuer plusieurs changements en une seule semaine. Donc, ce que je dois faire est de modifier le SQL ci-dessous pour considérer SEULEMENT la "action" la plus récente pour une entrée donnée. De cette façon, nous évitons le problème d'avoir des entrées qui étaient «fermées» dans le compte ouvert parce qu'elles avaient été ouvertes plus tôt.
SELECT track.historyID
FROM RS_HistoryTracker track
WHERE (track.action = 'STATUS:INITIAL:DRAFT'
OR track.action = 'STATUS:DELETED:DRAFT'
OR track.action = 'STATUS:DRAFT:DRAFT')
AND track.trackDateTime <= @endOfWeek
Toutefois, cette déclaration est contenue dans une autre instruction select, et est utilisé pour générer une liste complète des articles d'histoire:
SELECT COUNT(DISTINCT his.historyID) AS theCount
FROM RS_History his
WHERE his.historyID IN
(SELECT track.historyID
FROM RS_HistoryTracker track
WHERE (track.action = 'STATUS:INITIAL:DRAFT'
OR track.action = 'STATUS:DELETED:DRAFT'
OR track.action = 'STATUS:DRAFT:DRAFT')
AND track.trackDateTime <= @endOfWeek)
Alors, comment puis-je faire considérer la sélection intérieure que le plus récent suivi 'action' qui s'est produite jusqu'à ou à la date endOfWeek? HistoryTracker contient une colonne timbre datetime.
Je suppose que vous avez un champ ID de ticket dans la piste de table. Donc, essentiellement, vous voulez vous joindre à un ensemble de résultats qui contient l'identifiant de l'historique maximum pour chaque ID de ticket. – pjp
Oui, nous suivons l'ID du ticket dans la table des pistes – Ipster
Comme pour l'ID d'historique max, cela peut ne pas être le cas. Si j'exécute une requête depuis une semaine il y a 3 mois, j'ai besoin de l'élément d'historique le plus récent jusqu'à la date de fin de la semaine, en ignorant tous les éléments de l'historique qui se sont produits après cette semaine. – Ipster