2011-06-24 4 views
1

Ceci est assez maladroit.Analyser les lignes de données dans plsql

Initial info: Une requête de sélection maladroite finit par renvoyer 0 ou 1 en fonction de plusieurs conditions. Habituellement il faut sélectionner une seule ligne (d'autres données sont coupées par où, etc.). Le problème se produit lorsqu'il y a plus de lignes à analyser. Ainsi, les données ressemble réellement suit:

Status 
0 
1 

au lieu de

Status 
1 

Problème: Une seule donnée ramé est nécessaire en retour, à savoir s'il y a un 1 présent dans la ligne, il faut 1 retourné, sinon 0.

Condition: Cela doit être fait seulement dans une requête (pas de variables, ifs etc.).

Merci d'avance.

Répondre

4

Si vous êtes sûr que 1 et 0 sont les seules valeurs retournées, ne pouvez-vous pas utiliser un maximum sur cette requête pour voir les 1s ..?

select max(id) result 
    from (
    select 1 id from dual 
    union all 
    select 0 id from dual 
) 

    RESULT 
---------- 
     1 

    1 select max(id) 
    2 from (
    3 select 0 id from dual 
    4 union all 
    5 select 0 id from dual 
    6 union all 
    7 select 0 id from dual 
    8*) 
SQL>/

    MAX(ID) 
---------- 
     0 
+0

C'est un paragraphe de sql là, qui nouveau max pourrait me sauver !? :) –

+0

Peut-être que vous avez regardé le code trop longtemps :) –

+0

Oh ouais, c'est vrai. Sinon je ne viendrais pas ici. :) Merci btw. –