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 :

[CASE] et [ORDER BY] prb


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 43
    Par défaut [CASE] et [ORDER BY] prb
    Bonjour
    je travaille avec oracle 10g et j'ai la procedure suivante
    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
     
    CREATE OR REPLACE PROCEDURE sp_getAlarmDateList
    (
    	RCT1      IN  OUT 	GLOBALPKG.RCT1
    )
    AS
    BEGIN
     
    	OPEN RCT1 FOR
    	SELECT DISTINCT
     
    	case
    	 when (TO_NUMBER(TO_CHAR(alarmDate, 'MM'))  < 10) then '01/0' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
    	 else '01/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
    	end as alarmDate,
     
    	case
    	 when (TO_NUMBER(TO_CHAR(alarmDate, 'MM'))  < 10) then '0' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
    	 else CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
    	 end as alarmDate
     
    	FROM  tbl_Nurse_Alarm
    	ORDER BY alarmDate DESC;
    END;
    /
    j'ai l'erreur suivante
    PL/SQL: ORA-00960: nom de colonne ambigu dans liste de sélection


    au niveau du ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY alarmDate DESC;
    merci de m'aider

  2. #2
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Tu ne peux pas avoir deux fois le même nom de colonne dans un select (en l'occurence alarmedate)
    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
    OPEN RCT1 FOR
        SELECT DISTINCT
    
        case
         when (TO_NUMBER(TO_CHAR(alarmDate, 'MM'))  < 10) then '01/0' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
         else '01/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
        end as alarmDate,
    
        case
         when (TO_NUMBER(TO_CHAR(alarmDate, 'MM'))  < 10) then '0' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
         else CAST(TO_NUMBER(TO_CHAR(alarmDate, 'MM')) as VARCHAR2 (30)) || '/' || CAST(TO_NUMBER(TO_CHAR(alarmDate, 'YYYY')) as VARCHAR2 (30))
         end as alarmDate2
    
        FROM  tbl_Nurse_Alarm
        ORDER BY 1 DESC
    PS : je pense que tu peux remplacer tous tes 'CAST' par de simples fonctions date (round et trunc)

Discussions similaires

  1. order by decode ou case
    Par Marcel Chabot dans le forum PL/SQL
    Réponses: 6
    Dernier message: 03/06/2010, 16h30
  2. Special query SELECT * FROM CASE WHERE ORDER
    Par WildGroup dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/06/2009, 21h17
  3. Soucis d'ORDER BY dynamique (CASE) dans un OVER()
    Par Danny Blue dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/04/2007, 13h53
  4. ORDER BY et CASE
    Par Rei Angelus dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2006, 10h03
  5. Réponses: 2
    Dernier message: 15/05/2006, 14h08

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