Erreur de programmation

badebila12 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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