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

Langage SQL Discussion :

[SQL 2005] Requête Compliquée


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut [SQL 2005] Requête Compliquée
    Bonjour,

    j'ai un soucis pour faire une requête :


    setnocounton
    create
    table Histo
    (
    Id varchar(10)primarykey,
    Week varchar(10),
    Project varchar(10)
    )
    insertinto Histo (Id, Week, Project)
    select'47','2006-12','Internet'
    unionall
    select'48','2006-12','Internet'
    unionall
    select'49','2006-13','Intranet'
    go
    select*
    from Histo
    go


    ce qui donne ceci:

    Id | Week | Project
    47 | 2006-12 | Internet
    48 | 2006-12 | Internet
    49 | 2006-13 | Intranet


    et moi j'essaye de faire ceci :

    Project | 2006-12 | 2006-13
    Internet | 47 | 49
    Intranet | 48 | null


    pour le moment, je n'y parvient pas, quelqu'un peut-il m'aider ?

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    C'est du regroupement selon un critère de date ET de projet ...

    Jette un oeil du côté de ce post-là, voir si ça peut t'aider : http://www.developpez.net/forums/sho...5&postcount=30

  3. #3
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Merci pour ce lien très intéressant...

    Mais je ne m'en sort pas, j'ai vu beaucoup de trucs qui utilise PIVOT, mais je ne comprend pas trop comment faire...

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    La requete est compliquée car ce n'est pas le but du SQL.
    La mise en forme des données extraites seront plus faciles par un client de developpement que par SQL lui meme.
    En effet, tu pourras reussir a faire une requete pour ton probleme, elle sera tres lourde, peu performante et surtout pas evolutive : actuellement tu geres 2 dates mais apres lorsque tu voudras afficher 200 dates en colonnes, ta requete SQL sera plus qu'illisible.

    Mon conseil est de réaliser cette mise en forme avec un outil de developpement.

    Bon courage

  5. #5
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    actuellement, j'ai un truc en vb pour faire cela, mais c'est hyper lourd car il fait enormement de requetes SQLpour obtenir cela (on affiche 35 semaines pour 48 projets soit 1680 requètes à chaque fois)

    Je pense que pour avoir de meilleures perfs, il vaut mieux faire traiter cela à SQL server qu'à IIS.

  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 920
    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 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Une seule requête suffit qui liste tous les projet et toutes les semaines, puis un bout de code itératif qui va parcourir les lignes et réaliser votre souhait.

    A +

  7. #7
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Oui, c'est exactement ce que je cherche. Pour le moment je commence à m'approcher de cela avec la fonction Pivot de SQL 2005.

  8. #8
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    La requète est :
    SELECT Project,
    [2006-12]
    ,
    [2006-13]
    FROM
    (SELECT Project, week, id
    FROM histo) s
    PIVOT
    (
    max(id)
    FOR Week IN([2006-12],[2006-13])
    ) p
    ORDERBY [Project]

    Maintenant, je dois l'automatiser, il y a trop de valeurs en "dur".

Discussions similaires

  1. [SQL 2005] Problème pour une requête SELECT
    Par Rodie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/06/2007, 18h12
  2. Réponses: 3
    Dernier message: 04/06/2007, 13h29
  3. [SQL 2005] requètes appartenant à une personne
    Par cbleas dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/09/2006, 13h46
  4. Réponses: 4
    Dernier message: 04/05/2006, 20h01
  5. [SQL Server] Requête compliquée
    Par Cpt Anderson dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/01/2006, 15h24

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