..*/
..*/
Est-ce que tu ne cherches pas à recréer la fonction LISTAGG ?
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
je ne sais pas a quoi sert cette fonction, je suis entrain d'apprendre le langage malheuresement :/
si je devais utilisé cette fonction cela aurais donnée quoi ?
il faut savoir que je dois comprarer a chaque fois les id (si c'est le même, on recupere juste son nombre et on le met à la suite des autres nombre (si il y en a) dans la colonne nombre de la table resultat séparé des virgules
La requête suivante devrait retourner ma liste que tu attends :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT MIN(id) AS id , user_name , LISTAGG(nombre, ';') WITHIN GROUP (ORDER BY nombre) FROM stockage GROUP BY user_name ORDER BY id
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
merci, celle ci marche effectivement mais si je dois remplir la table resultat avec les données de la table delta etant donné qu'elle est vide tout en utilisant le meme principe de si il y a 2 id qui sont pareil on recupere juste son nombre et on le rajoute l'un apres l'autre .. (du genre au depart ma table resultat et vide, je vais dans la table delta je recupere une donne je l'insere dans la table resultat, 2e fois je vais et je vois que c'est le meme idee que celle d'avant, a ce moment la je recupere juste son nombre au lieu de réecrire les informations de l'id qu'on a) et si c'est un id different de celle qu'on a dans la table resultat on insere tout simplement. il faut quel requête pour ça ?
Regarde ce que peut faire pour toi la commande MERGE...
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Merci, Je me suis documenter pour le MERGE et comme requette j'ai :
et j'ai comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT MIN(id) AS id , user_name , LISTAGG(nombre, ';') WITHIN GROUP (ORDER BY nombre) FROM delta GROUP BY user_name ORDER BY id; MERGE INTO delta e USING resultat ne ON ( e.id = ne.id or ne is empty ) WHEN NOT MATCHED THEN INSERT (e.id, e.user_name, e.nombre) VALUES (ne.id,ne.user_name,ne.nombre);
Help pleaseError at Command Line : 10 Column : 21
Error report -
SQL Error: ORA-00904: "NE": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Je ne vois pas très bien ce que vous essayez d'accomplir. Voilà juste un exemple pour mettre vos numéros dans un Varray à partir des données opérationnelles. Il est toute à fait possible que créer juste une vue pour cela pourriez vous suffire.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 SQL> SQL> Drop table t_tab 2 / Table dropped SQL> Create table t_tab ( 2 id int primary key, 3 user_name varchar2(10) not null, 4 nombre int 5 ) 6 / Table created SQL> Insert All 2 Into t_tab values (1,'bibi',5) 3 Into t_tab values (2,'roger',6) 4 Into t_tab values (3,'bibi', 7) 5 Into t_tab values (4,'julion', 3) 6 Into t_tab values (5,'bibi',12) 7 Select * 8 From dual 9 / 5 rows inserted SQL> Commit 2 / Commit complete SQL> Create Or replace Type my_va20 As Varray(10) Of Number(10) 2 / Type created SQL> Select user_name, 2 cast(collect(nombre order by id) as my_va20) Tableau 3 From t_tab 4 Group By user_name 5 / USER_NAME TABLEAU ---------- ------- bibi <Object julion <Object roger <Object SQL>
Partager