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 :

afficher les Jours du mois


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut afficher les Jours du mois
    Bonjour,
    Voila je souhaiterais afficher tous les jours de la periode que j'indique, meme si il n'y a pas d'enregistrement. Existe t'il une possibilité que je puisse ajouter a ma requête ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    select 
    T.Date,
    T.Jours,
    T.Affaire,
    T.Perso,
    T.Equipe
    from
    (
        select
        convert(char(10),T1.[Journée],103) as Date,
        T1.[Absence] as Jours,
        T1.[Agence Origine] as Affaire,
        T1.[Ressource] as Perso,
        T1.[Equipe] as Equipe
        from dbo.[SOCIETE$Emploi du temps] T1
        inner join dbo.[SOCIETE$Filtre Export Paye] T2
        on T1.[Ressource] = T2.[Code Resource Associée]
        where T2.[Code Ressource] = 'TOTO'
        and T1.Absence = '1'
        and T1.[Type] = '0'
        and T1.[Journée] between '01/08/2010' and '31/08/2010'
        --order by [Journée]
     
    union all
     
        select
        convert(char(10),T1.[Forecast Date],103) as Date,
        cast(T1.[Forecast Quantity (Base)] as float) as Jours,
        T1.[Document No_] as Affaire,
        T1.[Ressource] as Perso,
        T1.[Equipe] as Equipe
        from dbo.[SOCIETE$Production Chantier] T1
        inner join dbo.[SOCIETE$Filtre Export Paye] T2
        on T1.[Ressource] = T2.[Code Resource Associée]
        where T2.[Code Ressource] = 'TOTO'
        and T1.[No_] = 'PR'
        and T1.[Forecast Date] between '01/08/2010' and '31/08/2010'
        --order by T1.[Ressource],T1.[Forecast Date]
    )T
    order by Perso,Date
    MERCI pour votre aide et vos remarques.

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Dans une base de données, vous ne trouverez que ce que vous y avez mis. La recherche de quelque chose qui n'existe pas donne systématiquement un résultat vide !

    Pour résoudre ce problème il existe différentes solutions :
    1) rajouter une table de calendrier avec toutes les dates comme je l'indique ici : http://sqlpro.developpez.com/cours/gestiontemps/
    C'est de loin la solution la plus performante !

    2) générer les dates manquantes, à la volée dans la requête, par exemple à l'aide d'une requêtes récursive de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH
    T0 AS (SELECT CAST('2000-01-01' AS DATE) AS JOUR),
    T1 AS (SELECT JOUR FROM T0
           UNION  ALL
           SELECT DATEADD(day, 1, JOUR)
           FROM   T1
           WHERE  DATEADD(day, 1, JOUR) <= '2010-12-31')
    SELECT *
    FROM   T1
    OPTION(maxrecursion 10000)
    Qui génére une table des dates du 1/1/200 au 31/12/2010.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    merci SQLpro
    je vais tester la deuxieme solution

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Vous avez raison de choisir la plus mauvaise... A moyen terme, cela nous donne de la marge pour intervenir en audit, tuning et conseil divers sur les performances, avec un tarif à ce jour de 1250 € HT la journée !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous avez raison de choisir la plus mauvaise... A moyen terme, cela nous donne de la marge pour intervenir en audit, tuning et conseil divers sur les performances, avec un tarif à ce jour de 1250 € HT la journée !

    A +
    Effectivement la deuxième est mauvaise.
    Tout comme la première n'est pas nécessaire.

    (1250€ HT... ça fait cher pour ce résultat)

    Faites plutôt une recherche sur les "TALLY TABLE" ou "NUMBER TABLE", des tables artificielles qui représentent tous les nombres compris dans certains intervalles (par ex de 0 à 4294967295).

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Sergejack Voir le message
    ...
    Tout comme la première n'est pas nécessaire.
    C'est bien des démolir les petits copains, mais peut tu expliquer pourquoi ?

    Ce serait au moins faire preuve d'honnêteté !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [10gR2] Afficher les jours d'un mois
    Par lbar012001 dans le forum PL/SQL
    Réponses: 6
    Dernier message: 27/10/2013, 14h49
  2. Cross tab afficher tous les jours du mois
    Par David55 dans le forum BIRT
    Réponses: 11
    Dernier message: 27/12/2010, 13h08
  3. [Dates] Afficher les jours du mois dans un formulaire
    Par Jimmy Monkey dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2007, 11h27
  4. afficher les jours d'un mois
    Par lido dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/03/2006, 23h38
  5. Réponses: 4
    Dernier message: 25/11/2004, 11h17

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