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

PL/SQL Oracle Discussion :

Fonction d'agrégat faisant un "et" Logique


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut Fonction d'agrégat faisant un "et" Logique
    Hello
    savez s'il existe sous ORACLE une fonction d’agrégat qui réalise "un et logique" ?
    un exemple étant plus parlant qu'un long discours

    J'ai dans une table T1 le champ C1
    C1 a comme valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    100111111
    011111111
    001111111
    je voudrais pouvoir faire truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select bit_and(C1) from T1
    ("bit_and" étant une fonction d'agrégation like "sum" )
    qui en resultat me donne le "et logique" de cet agrégat

    Soit ici ==> j'ose esperé avoir été clair
    merci de votre aide
    Signé : Capitaine Jean-Luc Picard

  2. #2
    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
    Ca n'existe hélas pas à ma connaissance.

    Quand je dois le faire, je suis obligé de faire du récursif ...

    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
     
    WITH t AS
    (
    SELECT champ, row_number() over (order by champ) as n
      FROM table
    ), recurs (ChampBitAnd, n) AS
    (
    SELECT champ AS ChampBitAnd, n
      FROM t 
    WHERE n =1
    UNION ALL
    SELECT BITAND(r.ChampBitAnd,t.champ) as ChampBitAnd, r.n + 1 As n
      FROM recurs r INNER JOIN t ON (t.n = r.n + 1)
    )
    SELECT min(ChampBitAnd) 
      FROM recurs

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