0
votes

SQL - y compris des groupes avec la propriété la plus récente

Mon jeu de données comprend des tests sur des périphériques appartenant, mais un appareil peut être acheté et revendumé, et nous ne voulons que les tests associés au plus récent.

Le jeu de données ressemble à ceci: P>

TestID               ProductID       RegistrationID     TestDate
00021357916020      P3K25EL141297        89D617         2019-07-22
00021357915928      P3K25EL141297        89D617         2019-07-15
00021353422334      P3K25EL141297        5PKY90         2019-05-31


1 commentaires

Vous pourrez peut-être utiliser un déclencheur SQL pour enregistrer la dernière modification à cette table. Cependant, cela dépend si d'autres entrées seront ajoutées / éditées après sa production. Y a-t-il une table qui conserve tous les enregistrements? Ceux-ci ne semblent pas être uniques dans vos exemples de données.


3 Réponses :


0
votes

Vous semblez vouloir vouloir les lignes dont enregistrezID a le dernier Testerdate par ProductID . Si tel est le cas, une option simple consiste à filtrer avec une sous-requête corrélée; xxx

Cette requête prendrait l'avantage d'un index sur (enregistrement, testdate)


0 commentaires

0
votes
DECLARE @t TABLE(TestID NVARCHAR(50), 
                 ProductID NVARCHAR(50), 
                 RegistrationID NVARCHAR(50), 
                 TestDate DATETIME);

INSERT INTO @t
VALUES
    ('00021357916020','P3K25EL141297','89D617','2019-07-22'),
    ('00021357915928','P3K25EL141297','89D617','2019-07-15'),
    ('00021353422334','P3K25EL141297','5PKY90','2019-05-31');

-- Or like this...

SELECT
    t1.*
FROM
    @t t1
CROSS APPLY
    (SELECT TOP 1 RegistrationID 
     FROM @t 
     WHERE ProductID = t1.ProductID 
     ORDER BY TestDate DESC) t2
WHERE
    t2.RegistrationID = t1.RegistrationID;

0 commentaires

0
votes

avec first_value () code> Fonction de fenêtre: xxx pré>

Voir le Demo .
Résultats: P>

> TestID      | ProductID     | RegistrationID | TestDate               
> :---------- | :------------ | :------------- | :---------
> 21357916020 | P3K25EL141297 | 89D617         | 2019-07-22
> 21357915928 | P3K25EL141297 | 89D617         | 2019-07-15


0 commentaires