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

SQL Oracle Discussion :

Remplacer plusieurs UNION par DECODE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut Remplacer plusieurs UNION par DECODE
    Bonjour,
    J'ai une question SVP.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select t ,d from t1,t2 where t1.id1=t2.id1  and u like '%10' 'or un'
    union select t,d from t1,t2 wheret1.id1=t2.id1 and u like '%11'  'or b'
    Je veux faire le même select utilisant decode pour ' or u' et 'or b'.
    Merci.

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    DECODE n'existe pas en SQL. C'est spécifique à Oracle.
    En SQL il faut utiliser CASE. À me lire : http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    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
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    DECODE n'existe pas en SQL. C'est spécifique à Oracle.
    En SQL il faut utiliser CASE. À me lire : http://sqlpro.developpez.com/cours/sqlaz/select/#L7
    Comme SQLPro l'a déjà indiqué, avec case vous pouvez.
    Je rajoute qu'avec decode vous ne pouvez pas.

    Au passage, êtes-vous sûre d'être sur une base PostgreSQL ?

  4. #4
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    pour tous l'union il existe une seul differente
    c'est dans le like %10 %11 pour l' or unc '
    c pour dire si like '%10' tu peut la mentionée comme 'or unc'
    si like '%11' tu peut la mentionée comme 'or b'
    j'ai travail sur une base donne oracle(sqldeveloper) dont les donnée sont confidentiel si pour ça j'ai essayée de donneé un exemple pour savoir la syntaxe (or unc , or b des noms qui ne sont pas dans la base de donne )
    moi ce que je veux faire c'est d'appeler des fonctions pl sql dans un data template pour faire le reporting

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Si la base de donnée est sous Oracle, pourquoi avoir posté dans PostgreSQL ?
    Pour des raisons de confidentialité aussi ?
    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.

  6. #6
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    je pense que je trouver la solution
    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  distinct  m.segment1||'.'|| m.segment2 ||'.'|| m.segment3 ,
    			'OR PROOF' as FRAPPE,
    			m.description as desc,
    			m.SEGMENT2 A,
    			get_non_val_enc(:p_id, :p_date_ref,m.segment1 , m..segment3)TRANS
    ( case segment3 
    		WHEN like'%10' THEN 'OR PR'
         		WHEN like'%11' THEN 'OR UN'
    		WHEN like'%20' THEN 'AT pro'
     
         		WHEN like'%21' THEN 'ARGENT UNC'
         		WHEN like'%40'  THEN 'D Coe'
    		When like'%30' THEN 'B PRO'
    		ELSE '---'
    		end) as frappe
     
    		from 	mtl_system_items_b m,
     			mtl_item_categories_v micv,
    			mtl_parameters mp,MTL mmt
     
     
    		where mtl_system_items_b.organization_id = :p_id
    			and m.inventory_item_id =  mtl_item_categories_v .inventory_item_id 
       			and m.organization_id =  mtl_item_categories_v .organization_id
     
    			and micv.segment1 in ('MFID-MPC')
    			and micv.CATEGORY_SET_NAME like 'A%'
    			and m.costing_enabled_flag = 'N'
    			and m.segment3 not like '%MED%'
     
    			and (	m.segment3 like '%10'
        			or 	m.segment3 like '%11'
        			or  	m.segment3 like '%20'
    			or 	m.segment3 like '%21'
    			or	mt.segment3 like '%40'
    			or 	m.segment3 like '%30'
    			or 	(m.segment3 not like '%30') and (.segment3 not like '%20') 
    			and (m.segment3 not like '%10') and (m.segment3 not like '%11')
    			and (m.segment3 not like '%21') and (m.segment3 not like '%40'));

  7. #7
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    je pense que vous ete la pour aidé les gens ,au lieu de m'aidé a trouvé une solution tu es entrain de dire pour quoi tu fais ça et pour quoi ça vraiment j'aime pas ta façon de parler j'ai deja dit que j'ai pas trouver le forum de pl sql

  8. #8
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    pour like je peut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     and (u like '%10'
    or u like '%11'
    mais je sais pas quoi faire pour' or u' et 'or un'
    merci

  9. #9
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    moi je veux le faire avec pl sql

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    PL/SQL est le langage procédural associé à Oracle donc sans rapport avec PostgreSQL
    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.

  11. #11
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut utliser l'opérateur like dans decode
    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
    select a,b,c from ab a, ac c,ad d ,
    'or unc'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%10' 
    union 
    select a,b,c from ab a, ac c,ad d ,'or b'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%11' 
    union
    select a,b,c from ab a, ac c,ad d ,'or c'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%15'
    Je veux refaire ce code pour éliminer les UNION.
    Voilà ce que je fais, je veux savoir si c'est correct ou non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select a,b,c from ab a, ac c,ad d ,decode(a,like'%10','or unc',like '%11','or b',like'¨%15','or c')
    where a.id1=b.id2
    and   a.id1=c.id1
     and (a like '%10'
    or alike '%11'
    or a like '%15')
    merci

  12. #12
    Membre très actif
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Par défaut re
    C'est juste parce que je n'ai pas trouvé le pl/sql.

Discussions similaires

  1. [String] remplacer plusieurs espaces par un seul
    Par scraly dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 01/12/2010, 15h25
  2. [AC-2003] Remplacer plusieurs textbox par un label et une seule textbox
    Par buzz73 dans le forum IHM
    Réponses: 2
    Dernier message: 21/12/2009, 12h35
  3. Remplacer plusieurs espace par un seul
    Par rjcab dans le forum VBA Access
    Réponses: 14
    Dernier message: 04/07/2008, 12h28
  4. remplacer plusieurs mots par un seul mot
    Par nivose110 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 07/02/2007, 09h40
  5. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51

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