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 :

Répartition de données en groupe sans utiliser d'instruction while


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut Répartition de données en groupe sans utiliser d'instruction while
    bonsoir,

    Je me permets de vous exposer mon cas. soit la table TOTO
    C1 P1 l1
    C2 P1 l3
    C3 P2 l1
    C4 P4 l10

    je souhaiterais faire des insertion dans 4 tables, chaque table réprésente une division, exemple la valeur de la colonne p exsite dans la une ligne précédente j'insere la ligne dans le groupe,
    si la valeur de la collonne 1 est identique à une valeur associé à la colonne p : j'insere la ligne dans le même groupe.

    Exemple : pour le tableau ci dessus, j aurais

    C1 P1 l1 group1
    C2 P1 l3 group1
    C3 P2 l1 group1
    C4 P4 l10 groupe2
    merci pour votre aide,

    Padawan

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    Pourriez vous détailler plus vos regles de gestion ? je ne vois vraiment pas comment vous arrivez au résultat attendu...

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Respectez les règles de postage :
    https://www.developpez.net/forums/d9...vement-poster/

    Cela nous aidera à comprendre votre problème et y répondre

    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/ * * * * *

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    J'ai pas tout compris le besoin, mais en partant de votre liste, j'obtiens le résultat que vous demandez...

    Reste à savoir si les calculs sont bien ceux que vous souhaitez...
    Code sql : 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
     
    with toto (c, p, l)
    as
    (
    	select 'C1', 'P1', 'l1'
    	union all
    	select 'C2', 'P1', 'l3'
    	union all
    	select 'C3', 'P2', 'l1'
    	union all
    	select 'C4', 'P4', 'l10'
    ),
    ranked(c, p, l, r)
    as
    (
    	select c, p, l, rank() over (order by c)
    	from toto
    )
    select c, p, l, concat('group', dense_rank() over (order by isnull((select min(r2.r) from ranked r2 where r2.r < r1.r and (r2.p = r1.p or r2.l = r1.l)), r1.r)))
    from ranked r1

    Après, ça ne fonctionne plus correctement si les critères de regroupement peuvent être en cascade (ligne 3 dans groupe 1 car donnée identique que ligne 2 dans groupe 1 car donnée identique ligne 1).

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/05/2010, 19h03
  2. Validation de données sans utiliser ENTER
    Par Dread1717 dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2008, 11h46
  3. Réponses: 5
    Dernier message: 11/04/2007, 13h02
  4. Effacer données formulaire sans utiliser de bouton
    Par GillesFABRE dans le forum ASP
    Réponses: 3
    Dernier message: 23/08/2006, 13h27
  5. Delphi 7 - Rave Report sans utiliser de base de donnée
    Par Telemak dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/04/2006, 16h04

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