Bonjour à tous,
Je viens solliciter votre expertise sur SQL server.
Allons tout de suite à mon problème de débutant, ma_table principale :
record_id chain_id chain_n result
1 A 0 occupé
2 A 1 répondu
3 A 2 Répondeur
4 B 0 Personne
5 B 1 Libre
6 B 2 Sonné
......
......
Pour une chain_id donnée, il y a 3 chain_n.
Voici ma requête pour récupérer les enregistrements si un des 3 chain_n d'un chain_id donné, contient un résultat que j'aimerais avoir.
Par exemple, si je veux savoir s'il y a des chain_id dont 1 des 3 chain_n contient le reésult = 'occupé', je fais la requête ci-dessous :
Le résultat retourne des record_id 1,2,3
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 SELECT record_id,chain_id,chain_n,result FROM ma_table Rm where chain_id in (select chain_id from ma_table sR where call_result = 'occupé' and not exists (select * from ma_table Rx where sR.chain_id = Rx.chain_id and Rx.result in ('parlé','chanté') ) ) group by record_id,chain_id,chain_n,result ;
Jusque là tout va bien. J'aimerais maintenant prioriser sur result, avec ma requête précédente,
si je veux avoir le résultat = 'occupé' mais si 1 des 2 autres chain_n contient le result qui est plus priorisé que 'occupé', ici en l'occurence 'Répondeur'
ma requête ne devrait pas retourner les record_id 1,2,3
TABLE_REF :
RESULT VAL_PRIO
Libre 4
occupé 2
Personne 3
Répondeur 1
répondu 5
Sonné 6
Et là, je ne sais pas comment m'y prendre
J'espère d'être compréhensible.
Partager