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

MS SQL Server Discussion :

[SQL server] Comment Fusionner des données dans une requête


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 60
    Points
    60
    Par défaut [SQL server] Comment Fusionner des données dans une requête
    bonjour
    j'ai une table avec les colonnes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    * FK_sit_nom     Varchar     10
    * deb_date       DateTime    8
    * deb_temps      Char         8
    deb_debitV1      Varchar      5
    ....
    Les 3 premiers champ sont une clé primaire concaténée

    la colonne deb_date contient seulement des date
    (la partie des heures est à 00:00:00:000)

    la colonne deb_temps contient l'heure au (format hh:mm:ss)

    la colonne deb_debitV1 contient normalement un nombre (le débit)
    mais peut contenir "N/A"

    Ce que je voudrais c'Est faire une requête qui me retournerait
    toutes les données pour une journée donnée, mais je voudrais
    avoir une ligne de donnée par heure.

    Donc il faudrait que les données du champ deb_debitV1 soient
    fusionnés (additionnées) ensemble. Si une des lignes contenait
    "N/A" comme valeur du champ, il faudrait que la ligne retournante
    de la fusion soit "N/A"

    ex: si j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    2005-06-15    10:15:00    5
    2005-06-15    10:20:00    10
    2005-06-15    10:30:00    25
    2005-06-15    10:45:00    5
    2005-06-15    11:15:00    5
    2005-06-15    11:50:00    10
    2005-06-15    12:15:00    5
    2005-06-15    12:30:00    N/A
    2005-06-15    12:45:00    25
    2005-06-15    13:30:00    10
    il faudrait que ca me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    2005-06-15    10:00:00    45
    2005-06-15    11:00:00    15
    2005-06-15    12:00:00    N/A
    2005-06-15    13:30:00    10
    Est-ce que c'est possible à faire avec une procédure stoquée
    ou je suis obligé de faire le traitement dans le code behing
    de ma page asp.net en C#

    Merci énormément

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    Pour l'idée : à encapsuler dans une SP, en y gérant le "N/A". Pourquoi gérez-vous des valeurs dans un varchar() ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select deb_date, datepart(h,deb_temps), sum(deb_debitV1 as float)
    from VotreTable 
    group by deb_date, datepart(h,deb_temps)
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 60
    Points
    60
    Par défaut
    quand je remplis la Bd, deb_debitV1 vaut normalement une valeur entière
    donc j'aurais du la mettre dans un champ int.
    j'aurais pu remplacer n/a par 0, ou -1, ou une valeur nulle
    mais le probleme persiste, je ne sais pas comment grouper
    en gérant la valeur.
    ex: retourner null si un des champs contient la valeur null.

    Pour ce qui est des groupements, je ne voudrait pas grouper nécessairement
    aux heures, ca pourait être aux 5 min, 20 min
    est ce qu'on peut faire un groupement aux 5min avec un date part
    ou on peut juste un groupement aux minutes

    merci beaucoup

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/10/2011, 05h44
  2. Réponses: 3
    Dernier message: 01/12/2006, 20h31
  3. Réponses: 17
    Dernier message: 22/09/2006, 17h34
  4. Réponses: 6
    Dernier message: 11/07/2006, 16h09

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