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 :

Fenêtrage - Attribuer toujours la même valeur d'un jeu de données [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut Fenêtrage - Attribuer toujours la même valeur d'un jeu de données
    Bonjour à tous,

    Je reviens pour une question qui, j'en suis sûr, est simplissime pour les experts du forum:

    Soit les enregistrements suivants:

    code1 jour1 valeur1
    code1 jour1 valeur2
    code1 jour1 vlaeur3
    code1 jour2 valeur4
    code1 jour2 valeur5
    code1 jour2 valeur6


    je voudrait avoir par fenêtrage et non par sous-requête, la résultat suivant

    code1 jour1 valeur1 valeur2
    code1 jour1 valeur2 valeur2
    code1 jour1 vlaeur3 valeur2
    code1 jour2 valeur4 valeur5
    code1 jour2 valeur5 valeur5
    code1 jour2 valeur6 valeur5

    J'ai essayé LAG, RANGE BETWEEN mais sans succès...

    Merci par avance pour toute aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 081
    Points : 30 829
    Points
    30 829
    Par défaut
    L'important dans ce genre de problème c'est d'expliquer pourquoi, fonctionnellement, cette valeur est sélectionnée et pas une autre.
    Ce sera plus simple ensuite de trouver comment la sélectionner
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par informer Voir le message
    je voudrait avoir par fenêtrage et non par sous-requête, la résultat suivant
    Bonjour,
    Par curiosité, à part un exercice scolaire, il y a une raison à vouloir faire forcément du fenêtrage plutôt qu'une sous-requête ?
    Et je plussoie al1_24 : sans connaitre la règle, impossible de répondre - enfin là on pourrait écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN valeur IN ('valeur1','valeur2','valeur3') THEN 'valeur2' ...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Merci à vous deux pour votre réponse.

    J'analyse du code qui me demande entre autre ceci:


    PAYS ID JOUR PERIODE COEFF Coeff Ref Moyenne basse Moyenne haute Ratio bas Ratio Haut
    pays1 code1 jour1 0.0 0,511889 0,60293
    0,610800
    0,749711
    0,36826964 0,45202325
    pays1 code1 jour1 0.5 0,60293
    0,60293 0,610800 0,749711 0,36826964 0,45202325
    pays1 code1 jour1 1.0 0,709711 0,60293 0,610800 0,749711 0,36826964 0,45202325
    pays1 code2 jour1 0.0 0,709711 0,511889
    0,610800 0,749711 0,3126618 0,38376881
    pays1 code2 jour1 0.5 0,511889 0,511889 0,610800 0,749711 0,3126618 0,38376881
    pays1 code2 jour1 1.0 0,789711 0,511889 0,610800 0,749711 0,3126618 0,38376881

    sachant que

    • Coeff Ref = Ma question initiale
    • Moyenne basse = avg(case when periode = 0 then Coeff end) over (partition by pays,jour) ==> Moyenne (Coeff ligne1; coeff ligne 4) = (0,511889 + 0,709711 )/2 = 0,610800
    • Moyenne haute = avg(case when periode = 1 then Coeff end) over (partition by pays,jour) ==> Moyenne (Coeff ligne3; coeff ligne 6) = (0,709711 + 0,789711 )/2 = 0,749711
    • Ratio bas = Moyenne basse (ligne i) * Coeff réf (ligne i)
    • Ratio haut= Moyenne haute (ligne i) * Coeff réf (ligne i)


    Encore merci pour votre aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    J'ai trouvé une solution qui fonctionne bien pour obtenir le Coeff Réf :

    • First_value (case when periode = 0.5 then Coeff Ref end) over (partition by id,jour order by id)


    Cela marche aussi avec

    • Max (ca when periode = 0.5 then Coeff Ref end) over (partition by id,jour)
    • Avg(case sewhen periode = 0.5 then Coeff Ref end) over (partition by id,jour)


    Car parmi les X lignes , dans le cas présent 3 lignes, de la partition (toutes les lignes ayant le même id et jour que l'enregistrement courant), seule la ligne de la partition dont la période = 0.5 est sélectionnée.

    Merci encore pour votre aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Toujours la même valeur dans mon vecteur
    Par Elstak dans le forum C++
    Réponses: 7
    Dernier message: 23/10/2008, 14h05
  2. getSelectedItem me retourne toujours la même valeur
    Par une_tite_question dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/06/2008, 13h49
  3. Rand, toujours la même valeur
    Par Invité4 dans le forum C++
    Réponses: 4
    Dernier message: 08/04/2008, 16h13
  4. Réponses: 4
    Dernier message: 13/11/2007, 09h01
  5. [JTextField] getText renvoie toujours la même valeur
    Par Sufflope dans le forum Composants
    Réponses: 4
    Dernier message: 13/01/2007, 01h12

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