Besoin de l'enregistrement de date minimum de la table ci-dessous, j'ai essayé de cette façon mais ne fonctionne pas. Toute aide sera excellente
3 Réponses :
Je peux penser à faire un top 1 ou énumérer la requête, puis filtrant
SELECT MIN(DATE) AS MINDATE FROM #TEST That's all
comme arce.est suggéré dans leur deuxième échantillon de code, vous pouvez affecter un numéro de ligne qui vous permettra de filtrer les données comme vous l'avez décrite:
declare @Samples as Table ( Id Int, En_Id Int, Rn_Id Int, [Value] VarChar(5), [Date] DateTime );
insert into @Samples ( Id, En_Id, Rn_Id, [Value], [Date] ) values
( 1234, 1756, 605,'13.2', '2019-08-14 05:29:00.000' ),
( 1234, 1756, 605,'15.5', '2019-07-17 10:14:00.000' );
select Id, En_Id, Rn_Id, [Value], [Date] -- , RN -- To see the values assigned.
from (
select Id, En_Id, Rn_Id, [Value], [Date],
-- Generate a row number grouped by Id, En_Id, Rn_Id ordered by ascending [Date] .
Row_Number() over ( partition by Id, En_Id, Rn_Id order by [Date] ) as RN
from @Samples ) as Placeholder
where RN = 1; -- Output only the first row from each Id, En_Id, Rn_Id group.
Quel est le problème avec ce que vous avez? Peut-être que vous êtes en fait après un
haut (1) code>?Considérez: SQLFIDDLE.com/#!18/A7A01/1
Quand j'exécute la requête ci-dessus, je reçois 2 enregistrements, mais je n'ai besoin que d'un enregistrement qui a une date minimale dans ces 2 enregistrements
Puisque vous groupe par
la valeur code> et que les lignes ont des valeurs code> différentes code> (?!) Vous obtenez deux lignes de résultat. Est-ce inattendu?C'est là où je ne sais pas comment résoudre, je n'ai pas besoin de 2 valeurs. Si j'ai le même identifiant et plusieurs dates, j'ai besoin de la ligne de la moindre date.