-1
votes

Valeur minimale à l'aide de la date

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 xxx


5 commentaires

Quel est le problème avec ce que vous avez? Peut-être que vous êtes en fait après un haut (1) ?


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 et que les lignes ont des valeurs différentes (?!) 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.


3 Réponses :


0
votes

Je peux penser à faire un top 1 ou énumérer la requête, puis filtrant xxx


0 commentaires

0
votes
SELECT MIN(DATE) AS MINDATE
FROM #TEST 
That's all

0 commentaires

1
votes

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.


0 commentaires