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 31/05/2011, 11h41   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 248
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 248
Points : 63
Points : 63
Par défaut Ramener des valeurs entrées dans la requête

bonjour à tous,

j'aimerais créer une requête qui me ramène toutes les années sans que cela provienne d'une table quelconque, quitte à entrer les années à la main.

J'ai fait ca :
Code :
1
2
 
SELECT '2010' AS annee FROM dual;
mais je veux avoir plus d'une ligne : exemple

ANNEE
2000
2001
2002
etc.

Comment faire? Merci de votre aide...
dessinateurttuyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 11h58   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
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 684
Points : 10 432
Points : 10 432
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Avec UNION ALL si vous voulez les saisir à la main :
Code :
1
2
3
4
5
6
7
8
9
SELECT 2000 AS annee FROM dual union ALL
SELECT 2001          FROM dual union ALL
SELECT 2002          FROM dual;
 
     ANNEE
----------
      2000
      2001
      2002
Ou sinon de manière moins fastidieuse :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    SELECT 1999 + level AS annee
      FROM dual
connect BY level <= 15;
 
     ANNEE
----------
      2000
      2001
      2002
      2003
      2004
      2005
      2006
      2007
      2008
      2009
      2010
      2011
      2012
      2013
      2014
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/05/2011, 13h29   #3
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
A partir de 10g, la syntaxe que j'essaie de retenir car elle est sans "bug using", mais j'ai encore du mal :

Code :
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
 
SQL> SELECT annee
  2  FROM (
  3      SELECT 1999 annee, 0 u
  4      FROM DUAL) t
  5  MODEL
  6  dimension BY (u)
  7  measures(annee)
  8  rules upsert
  9  iterate(10)
 10  (annee[iteration_number+1] = annee[iteration_number]+1 )
 11  /
 
     ANNEE
----------
      1999
      2000
      2001
      2002
      2003
      2004
      2005
      2006
      2007
      2008
      2009
 
11 ligne(s) sÚlectionnÚe(s).
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/05/2011, 13h31   #4
Membre du Club
 
Inscription : octobre 2005
Messages : 248
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 248
Points : 63
Points : 63
Merci pour le tuyau! l'union marche bien!
dessinateurttuyen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 15h53   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
il y a aussi les collections, par exemple

Code :
1
2
3
4
5
6
7
8
SELECT value(t) n FROM TABLE(sys.odcinumberlist(2000,2005,2010,2011)) t;
 
         N
----------
      2000
      2005
      2010
      2011
Mais UNION ALL FROM DUAL est plus compréhensible
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/05/2011, 16h24   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
et puis aussi ... mon préféré et très lent

Code :
SELECT * FROM xmltable('2000 to 2010')
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/05/2011, 16h51   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Et mon préféré row-generation without i/o $pipelined functions
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/05/2011, 17h01   #8
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 263
Points : 3 263
Citation:
Envoyé par pacmann Voir le message
A partir de 10g, la syntaxe que j'essaie de retenir...
Y a pas à dire, chez certaines personnes, c'est une drogue dure, le SQL !
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 10h08   #9
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
bon, avec model j'aurais choisi une clause FOR
Code :
1
2
3
4
SELECT annee FROM DUAL 
MODEL
dimension BY (1999 annee) measures(0 x)
(x[FOR annee FROM 1999 TO 2008 increment 1] = 0 );
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h37.


 
 
 
 
Partenaires

Hébergement Web