Erreur de programmation

Fermé
badebila12 Messages postés 4 Date d'inscription vendredi 27 août 2021 Statut Membre Dernière intervention 30 août 2021 - 27 août 2021 à 17:05
yg_be Messages postés 22710 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 - 30 août 2021 à 12:06
Bonjour à tous,

Je suis novice et je travaille actuellement sur un programme SAS et j'utilise le langage SQL.
J'aimerai avoir votre avis sur le problème suivant:

Je possède une table BASE comme suit:

BASE:
Concurrent | Z | X | Y
MACIF | 100% | 100% | 6
MACIF | 100% | 156% | 7
MACIF | 100% | 200% | 8
AVIVA | 225% | 100% | 6
AVIVA | 225% | 156% | 7
AVIVA | 225% | 200% | 8

mon programme est comme cela:

proc sql;
create table TEST as
select distinct *,x as X1 ,y as Y1 from BASE where x = (select max(x) from BASE where x <= z)
group by Concurrent;
quit;


Le problème c'est que j'obtiens cela:

TEST:
Concurrent | Z | X | Y
MACIF | 100% | 200% | 8
AVIVA | 225% | 200% | 8

Alors que j'aimerais obtenir cela:

TEST:
Concurrent | Z | X | Y
MACIF | 100% | 100% | 6
AVIVA | 225% | 200% | 8

Merci d'avance pour votre aide.

Configuration: Windows / Chrome 92.0.4515.159

3 réponses

yg_be Messages postés 22710 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
27 août 2021 à 18:00
bonjour,
avant tout, explique-nous la règle qui conduit au résultat que tu attends.
0
badebila12 Messages postés 4 Date d'inscription vendredi 27 août 2021 Statut Membre Dernière intervention 30 août 2021
30 août 2021 à 08:52
La règle?
Je ne comprend pas ta question.
J'aimerais que obtenir un résultat par concurrent, alors que la il prend la dernière valeur calculé et l'applique à tous
0
yg_be Messages postés 22710 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
30 août 2021 à 09:19
quel critère utilises-tu pour déterminer quel résultat tu veux obtenir?
quand tu auras bien expliqué cela, tu pourras commencer à concevoir la requête pour y arriver.
0
badebila12 Messages postés 4 Date d'inscription vendredi 27 août 2021 Statut Membre Dernière intervention 30 août 2021 > yg_be Messages postés 22710 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
30 août 2021 à 10:44
Du coup j'ai réussi autrement, en divisant mon programme en deux requêtes.
Mais j'aurai aimé comprendre pourquoi ma requête imbriquée ne marchait pas...dommage
0
badebila12 Messages postés 4 Date d'inscription vendredi 27 août 2021 Statut Membre Dernière intervention 30 août 2021
30 août 2021 à 09:43
Je suis dsl, mais étant novice je ne vois pas ou tu veux en venir.
J'ai publié ce message pour obtenir de l'aide car je ne sais pas
0
yg_be Messages postés 22710 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
30 août 2021 à 12:06
réfléchis alors à ce que
select max(x) from BASE where x <= z
te retourne.
les données mises dans la table ne sont pas assez nombreuses ni assez variées, elle ne t'aide pas à comprendre ce que tu fais.
0