bonjour à toutes et tous,
je me retrouve coincé sur une query que j'arrive pas a résoudre.
Voici le contexte:
et voici pour les données de la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 - create table TMP_PRD_TEST ( param_name VARCHAR2(40) not null, mag VARCHAR2(40) not null, prd VARCHAR2(40) not null, refe VARCHAR2(40) not null, ht FLOAT(38), ttc FLOAT(38) ); alter table TMP_PRD_TEST add constraint TMP_PRD_TEST_PK primary key (PARAM_NAME, MAG, PRD, REFE) using index;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 insert into TMP_PRD_TEST (param_name, mag, prd, refe, ht, ttc) values ('TITI', 'DEFAULT', 'DEFAULT', 'DEFAULT', 10, null); insert into TMP_PRD_TEST (param_name, mag, prd, refe, ht, ttc) values ('TITI', 'CARROUF', 'DEFAULT', 'DEFAULT', null, 14); insert into TMP_PRD_TEST (param_name, mag, prd, refe, ht, ttc) values ('TITI', 'DEFAULT', 'DEFAULT', 'ABC12ABC', 12, null);
je voudrais que si le mag match alors il prend le mag sinon il prend la valeur DEFAULT de même pour le produit et la ref.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select t.*, t.rowid from TMP_PRD_TEST t where param_name = 'TITI' and (mag like 'CARROUF' or mag = 'DEFAULT') and (prd like 'HARICOTS' OR PRD ='DEFAULT') and (refe like '%14%' or refe = 'DEFAULT')
dans mon test je devrais avoir uniquement la ligne 2
dans le test suivant
j'aimerai avoir que la ligne 3 la colonne la plus a droite ayant une plus forte priorité que ces précédentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select t.*, t.rowid from TMP_PRD_TEST t where param_name = 'TITI' and (mag like 'CARROUF' or mag = 'DEFAULT') and (prd like 'HARICOTS' OR PRD ='DEFAULT') and (refe like '%12%' or refe = 'DEFAULT')
Voila si quelqu'un a une astuce pour moi elle est la bienvenue....
Hésitez pas si vous avez besoin d'information...
N.
Partager