IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Plus petite et plus grande valeur dans une colonne entre 2 dates


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Plus petite et plus grande valeur dans une colonne entre 2 dates
    bonjour
    je souhaite récupérer la plus petite et la plus grande valeur entre 2 dates
    exemple

    ID STA_SiteNumber INF_NumberInStation INF_Date INF_Value
    0001400001 14 1 2020-09-18 09:00:00.0000000 0
    0001400001 14 1 2020-09-18 09:39:33.0000000 5
    0001400001 14 1 2020-09-18 09:39:34.0000000 10
    0001400001 14 1 2020-09-18 09:39:35.0000000 11
    0001400001 14 1 2020-09-18 10:00:00.0000000 11
    0001400001 14 1 2020-09-18 10:08:56.0000000 12
    0001400001 14 1 2020-09-18 10:08:57.0000000 14
    0001400001 14 1 2020-09-18 11:00:00.0000000 15
    0001400001 14 1 2020-09-21 07:00:00.0000000 15
    0001400001 14 1 2020-09-21 08:00:00.0000000 15
    0001400001 14 1 2020-09-21 09:00:00.0000000 15
    0001400001 14 1 2020-09-21 10:00:00.0000000 15
    0001400001 14 1 2020-09-21 11:00:00.0000000 15
    0001400001 14 1 2020-09-21 12:00:00.0000000 15

    et je souhaite ceci

    ID STA_SiteNumber INF_NumberInStation INF_Date INF_Value
    0001400001 14 1 2020-09-18 09:00:00.0000000 0
    0001400001 14 1 2020-09-21 12:00:00.0000000 15

    j'ai dans une dernière demande ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     " SELECT T1.ID , T1.STA_SiteNumber, T1.INF_NumberInStation, T1.INF_Date, T1.INF_Value " _
     & " FROM dbo.View_ArchivedInformations AS T1  " _
     & " WHERE ((T1.STA_SiteNumber = 16 or T1.STA_SiteNumber = 15 or T1.STA_SiteNumber = 14 )and T1.INF_NumberInStation < 49) " _
     & " AND T1.INF_Date= (SELECT MAX(S1.INF_Date)  " _
     & " FROM dbo.View_ArchivedInformations AS S1     WHERE S1.ID = T1.ID  )"
    merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 898
    Points : 53 136
    Points
    53 136
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH T AS
    (
    SELECT *, MIN(INF_Date) OVER() AS MIND, 
              MAX(INF_Date) OVER() AS MAXD
    FROM MaTable
    )
    SELECT * 
    FROM   T
    WHERE  MIND = INF_Date OR MAXD = INF_Date
    A +

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    désolé çà ne fonctionne pas

    pour essayer de faire simple
    je choisi un numero dans "STA_SiteNumber" un autre INF_NumberInStation
    qui me renvoie des dates INF_Date qui peux avoir dans le meme jour mais a des heures differentes plusieurs INF_Value

    je souhaites recuperer la plus petite valeur ainsi que la plus grande entre 2 dates

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 158
    Points : 1 948
    Points
    1 948
    Par défaut
    Bonjour,

    Il faut donc partitionner par STA_SiteNumber et INF_NumberInStation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH v as
    (SELECT T1.ID , T1.STA_SiteNumber, T1.INF_NumberInStation, T1.INF_Date, T1.INF_Value, row_number() over (partition by T1.STA_SiteNumber, T1.INF_NumberInStation order by T1.INF_Date) rn_asc, row_number() over (partition by T1.STA_SiteNumber, T1.INF_NumberInStation order by T1.INF_Date desc) rn_desc
     FROM dbo.View_ArchivedInformations AS T1 
    )
    select * from v
    where rn_asc = 1 or rn_desc = 1;

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    merci
    cele fonctionne , voici mon code peut on faire autrement ou c'est bon comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     '*****************
      Set rs = conn.Execute("WITH v as(SELECT T1.ID , T1.STA_SiteNumber, T1.INF_NumberInStation," _
     & " T1.INF_Date, T1.INF_Value, row_number() over " _
     & "(partition by T1.STA_SiteNumber, T1.INF_NumberInStation order by T1.INF_Date) rn_asc," _
     & " row_number() over (partition by T1.STA_SiteNumber, T1.INF_NumberInStation " _
     & " order by T1.INF_Date desc) rn_desc FROM dbo.View_ArchivedInformations AS T1 " _
     & " where (convert(date, T1.INF_Date)>='" & datedebut & " ' ) and (convert(date, T1.INF_Date)<='" & datefin & " ')" _
     & "and  (" & site & " and " & stat & " )) " _
     & " select * from v where  rn_asc = 1 or rn_desc = 1; ")
     '*****************
    en sachant que je choisi les dates et qu'un sitenumber ainsi que qu'un NumberInStation

Discussions similaires

  1. retenir la plus grande valeur dans une boucle
    Par red4000 dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/04/2018, 13h19
  2. [10g] Afficher la plus grande valeur dans une requête
    Par alexis trotta dans le forum SQL
    Réponses: 6
    Dernier message: 14/03/2014, 14h54
  3. Récupérer la 2ème plus grande valeur dans une variable
    Par lyonnaisdu26 dans le forum QlikView
    Réponses: 3
    Dernier message: 12/03/2012, 13h58
  4. recupérer la plus grande valeur dans une bdd
    Par djo007 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 30/01/2012, 21h15
  5. cherche la plus grande valeur dans une matrice
    Par thtghgh dans le forum MATLAB
    Réponses: 9
    Dernier message: 28/12/2009, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo