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 :

Suppression intégrale de doublons dans une liste retournée


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Par défaut Suppression intégrale de doublons dans une liste retournée
    bonjour

    travaillant dans une usine, je dois calculer, depuis une base de données de tracabilité, le "first pass yield" ou taux de premier passage (FPY)
    cela consiste a ne prendre en compte que les produits qui passent une seule fois et ignorer les repasses

    mon but est donc de supprimer les doublons de mes stats. je dispose d'un champ BDD "indicateur de passage" qui s’incrémente si le compteur passe une deuxieme fois, donnant pour résultat deux lignes avec le meme numero de produit, mais des indicateurs a 1 et 2

    j'ai d'abord pensé a créer une variable table conditionnée par indicateur = 2 et la confronter avec un deuxieme resultat conditionné par indicateur =1, et faire un "outer join" des deux tables, ce qui me donne le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    declare @tb1 table
    (
    	numero_sequentiel1 int,
    	indicateur1 int
    )
    declare @tb2 table
    (
    	numero_sequentiel2 int,
    	indicateur2 int
    )
    set @tb1 = (select numero_sequentiel, T5_ci_indicateur from t5_log where t5_ci_date_heure between @heure and @maintenant and t5_ci_indicateur ='1')
    set @tb2 = (select numero_sequentiel, T5_ci_indicateur from t5_log where t5_ci_date_heure between @heure and @maintenant and t5_ci_indicateur ='2')
    select tb2.numero_sequentiel2, tb2.indicateur2, tb1.numero_sequentiel1, tb1.indicateur1 from @tb2 as tb2 full outer join @tb1 as tb1 on tb2.numero_sequentiel2 = tb1.numero_sequentiel1
    mais ca marche pas!
    toutes @tb1 et @tb2 sont soulignés de rouge a partir du premier 'SET' et l'erreur retournée est "Must declare scalar table variable "@tb1"

    auriez-vous une idée pour faire marcher ce code ou une alternative a me proposer pour calculer mon FPY?

    merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Les variables sont des variables, mais surtout des tables : elles sont persistées dans TempDB.
    SET permet d'affecter une valeur scalaire à une variable scalaire, mais ne permet pas d'affecter des lignes à une table : pour cela, il n'y a pas d'alternative à INSERT (ou, par extension, MERGE).

    Donc on doit écrire :

    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
    INSERT INTO @tb1
    (
    	numero_sequentiel1
    	, indicateur1
    )
    SELECT	numero_sequentiel
    	, T5_ci_indicateur
    FROM	dbo.t5_log
    WHERE	t5_ci_date_heure BETWEEN @heure AND @maintenant
    AND	t5_ci_indicateur ='1'
     
    INSERT INTO @tb2
    (
    	numero_sequentiel2
    	, indicateur2
    )
    SELECT	numero_sequentiel
    	, T5_ci_indicateur
    FROM	dbo.t5_log
    WHERE	t5_ci_date_heure BETWEEN @heure AND @maintenant
    AND	t5_ci_indicateur ='2'
    @++

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Par défaut
    ca marche du tonerre

    merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/11/2014, 22h36
  2. suppression de doublon dans une liste
    Par jeje644 dans le forum Excel
    Réponses: 1
    Dernier message: 12/10/2014, 22h49
  3. [C# 2.0] Détecter les doublons dans une List<string>
    Par Rodie dans le forum Windows Forms
    Réponses: 36
    Dernier message: 30/03/2013, 15h21
  4. suppression de doublons dans une liste
    Par awalter1 dans le forum Général Python
    Réponses: 4
    Dernier message: 31/07/2012, 15h27
  5. [Oracle] Doublon dans une liste
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 9
    Dernier message: 09/06/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