Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2008, 09h36   #1
Membre du Club
 
Inscription : septembre 2006
Messages : 390
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2006
Messages : 390
Points : 47
Points : 47
Envoyer un message via MSN à Daniela
Par défaut Erreur dans le code

Bonjour, j'ai un probleme avec une query. moi je voudrais faire un calcul des record où l'age des personnes est entre 40 et 44 ans... j'ai fais cette query mais il y a un erreur... pourkoi?


Code :
1
2
3
SELECT IF ((( floor((sysdate - r.DATA_NASC)/365))  BETWEEN '40' AND  '44'), count(*),0) , r.SEX
FROM sdo r
WHERE r.diag_prin = '400'
Daniela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 09h46   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
on doit la deviner l'erreur ?

La syntaxe est complétement fausse. Lis les tutos sur le SQL pour plus d'infos.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 10h42   #3
Membre du Club
 
Inscription : septembre 2006
Messages : 390
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2006
Messages : 390
Points : 47
Points : 47
Envoyer un message via MSN à Daniela
il me dit qu'il manque une paranthese au niveau de between

Citation:
Envoyé par orafrance Voir le message
on doit la deviner l'erreur ?

La syntaxe est complétement fausse. Lis les tutos sur le SQL pour plus d'infos.
Daniela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 19h52   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 695
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 695
Points : 10 452
Points : 10 452
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Sans vouloir donner la solution complète, essaie de constuire ta requête de la forme suivante :

Code :
1
2
3
4
5
SELECT r.SEX, count(*)
FROM sdo r
WHERE r.diag_prin = '400'
AND -- condition d'âge entre 40 et 44 ans
GROUP BY r.SEX
Pour ta condition sur l'âge le plus propre serait d'utiliser les intervalles.
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 08h21   #5
Membre du Club
 
Inscription : septembre 2006
Messages : 390
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2006
Messages : 390
Points : 47
Points : 47
Envoyer un message via MSN à Daniela
je connait cette construction, mais le probleme est que j'ai plusieur condition parce que je voudrais subdiviser les données en classe. donc avec un if(...) c'est plus rapide.

Citation:
Envoyé par Waldar Voir le message
Sans vouloir donner la solution complète, essaie de constuire ta requête de la forme suivante :

Code :
1
2
3
4
5
SELECT r.SEX, count(*)
FROM sdo r
WHERE r.diag_prin = '400'
AND -- condition d'âge entre 40 et 44 ans
GROUP BY r.SEX
Pour ta condition sur l'âge le plus propre serait d'utiliser les intervalles.
Daniela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 10h01   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
IF n'est pas une commande SQL

Regarde DECODE ou CASE (SQL !)
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 10h51   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 695
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 695
Points : 10 452
Points : 10 452
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par Daniela Voir le message
je connait cette construction, mais le probleme est que j'ai plusieur condition parce que je voudrais subdiviser les données en classe. donc avec un if(...) c'est plus rapide.
N'hésitez pas à expliquer plus votre besoin alors, effectivement les requêtes s'écrivent en fonction des résultats attendus !
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h19.


 
 
 
 
Partenaires

Hébergement Web