Bonjour à tous,
Je m'arrache les cheveux sur un truc très simple pour moi en vba, odbc et recordset mais que je n'arrive pas à faire en sql sur Oracle 10.2 (sqlplus) à partir d'unix :
je souhaite deleter un certain nombre de lignes d'une table (en général le nombre de ligne divisé par 2 donc la moitié) mais ceci en aléatoire.
Il existe la clause SAMPLE (oracle) qui permet de faire de l'aléatoire :
select * from MA_TABLE sample (50)
où (50) représente 50 % de la table (enfin environ !)
Voilà ce que donne mon script en create :
1 2 3 4 5
|
create table MA_TABLE2 as
select * from MA_TABLE1
sample (99)
where rownum <= (select count(*) from MA_TABLE1) / 2 |
Je mets (99) parce que (50) ramène quelque fois moins (ou plus) de la moitié des lignes !!!!!! Donc je limite au nombre de lignes de la table divisé par 2.
Je me sers de la clause sample en select ou create table sans aucun soucis mais en delete rien à faire, j'ai une erreur "... sample clause not allowed ...".
J'ai tenté une autre approche avec le DBMS_random.value mais pareil ca ne marche pas.
Quelque DBA et/ou expert aurait il une soluce pour ma pomme ?
D'avance merci pour vos réponses et vos lectures !
Daniel.
Partager