BookmarkSubscribeRSS Feed
CélineSBD17
Calcite | Level 5

Bonjour, 

 

Je rencontre un problème avec ma fonction INTCK. Les données de sortie que j'obtiens ne sont pas toutes bonnes. 

Voici mon code:

PROC SQL;
CREATE TABLE VENTES_CAMPAGNE AS 

SELECT DISTINCT
TVEN.SIREN,
TRESUL.UTILISATEURID,
TVEN.OFFRE_VENTES,
TVEN.FAMILLE_VENTES,
TVEN.DATE_VALIDE2 AS DATE_ED_VENTE,
TVEN.PRI_IC AS MONTANT_PRI_VENTE,
TRESUL.DATEFIN_CAMPAGNE,
intnx('dtmonth',TRESUL.DATECREATION_LEAD,+4,'SAMEDAY') AS DFC_3 FORMAT=DATETIME16.,
TRESUL.DATECREATION_LEAD


FROM WORK.VENTES_TOTALE TVEN 
INNER JOIN WORK.CIBLAGE TRESUL ON (TRESUL.SIREN = TVEN.SIREN)

GROUP BY 1,2,3

;
QUIT;

 

et voici les données que j'obtiens: 

Les 3 premières lignes sont bonnes mais pas la 4ème ... etc

CélineSBD17_0-1595860428050.png

 


Savez-vous pourquoi?

Certaines de mes dates DFC_3 sont bonnes et d'autres non ... 

4 REPLIES 4
PaigeMiller
Diamond | Level 26

You show a column named DATECREATION_LEAD. Is this the column from data set TRESUL?

--
Paige Miller
CélineSBD17
Calcite | Level 5

La colonne DATECREATION_LEAD fait bien partie de ma table TRESUL, mais TRESUL est un rassemblement de d'autre table

 

TRESUL correspond à ma table CIBLAGE à la fin 

Les voici : 

PROC SQL;
CREATE TABLE LISTE_LEADS AS

SELECT DISTINCT
TCAMP.*,
TLEAD.PARENTID,
TLEAD.UTILISATEURID,
TLEAD.PORTEFEUILLEID,
TLEAD.IDLEAD,
TLEAD.REFERENCE,
TLEAD.NOMBREESCALADE,
TLEAD.DATECREATION AS DATECREATION_LEAD,
TLEAD.DATEMODIFICATION AS DATEMODIFICATION_LEAD,
TLEAD.STATUT AS STATUT_LEAD,
TLEAD.ABANDONREFUSID,
TLEAD.ABANDONMOTIF AS COMMENTAIRE

FROM WORK.CAMPAGNE_LEADS TCAMP
LEFT JOIN INFOCE.INFO_SESAME_CAMP_LEAD TLEAD ON (TCAMP.IDCAMPAGNE = TLEAD.CAMPAGNEID)

WHERE TLEAD.DATECREATION >= "01JAN2020:00:00:00"dt /* DATE CORRESPONDANT AU DEBUT DU SUIVI LEADS PAR RAPPORT A LA CREATION DU LEAD*/
;

QUIT;


PROC SQL;
CREATE TABLE LISTE_LEADS AS

SELECT DISTINCT 
TLEAD.*,
THOFF.OFFREID,
TOFF.LIBELLE AS FAMILLE_OFFRE


FROM WORK.LISTE_LEADS TLEAD 
LEFT JOIN INFOCE.INFO_SESAME_CAMP_LEAD_H_OFFRE THOFF ON (THOFF.LEADID = TLEAD.IDLEAD)
LEFT JOIN INFOCE.INFO_SESAME_CAMP_LEAD_OFFRE TOFF ON (THOFF.OFFREID = TOFF.IDOFFRE)

;

QUIT;

PROC SQL;
CREATE TABLE LISTE_LEADS AS

SELECT DISTINCT 
TLEAD.*,
TREFUS.LIBELLE AS RAISON_ABANDON

FROM WORK.LISTE_LEADS TLEAD
LEFT JOIN INFOCE.INFO_SESAME_CAMP_REFUS TREFUS ON (TLEAD.ABANDONREFUSID = TREFUS.IDREFUS)

;

QUIT;


/* AJOUT INFOS SUR LA SOCIETE PORTEUSE DU LEAD */

PROC SQL;
CREATE TABLE SOCIETE AS

SELECT DISTINCT 
TSOC.IDSOCIETE,
TSOC.SIREN, 
TSOC.RAISONSOCIALE,
TSOC.EFFECTIFSFR,
TSOC.SEGMENT,
TSOC.SEGMENTSFR

FROM WORK.LISTE_LEADS TLEAD
LEFT JOIN INFOCE.INFO_SESAME_SOCIETE TSOC ON (TLEAD.PARENTID = TSOC.IDSOCIETE)

;
QUIT;

/* AJOUTS DES INFORMATIONS SUR LE PROPRIETAIRE DU LEAD */

PROC SQL;
CREATE TABLE UTILISATEUR AS

SELECT DISTINCT
TLEAD.UTILISATEURID,
TUSER.IDUTILISATEUR,
TUSER.ACTIF,
TUSER.UPERID,
CATS(TUSER.NOM,"_",TUSER.PRENOM) AS PROPRIETAIRE_LEAD,
TUSER.DISTRIBUTEURID,
TUSEREX.CODEPDV,
TUSEREX.NOMPDV AS PDV_EXTERNE,
TUSEREX.ENSEIGNE AS ENSEIGNE_EXTERNE,
TUSEREX.LIBELLEREGIONSFR AS REGION_EXTERNE, 
TUSERIN.SECTEUR_RATTACHEMENT AS PDV_INTERNE,
CASE WHEN TUSER.ACTIF = "T" THEN "ACTIF" ELSE "compte non sectorisé" END  AS UTILISATEUR_ACTIF

FROM WORK.LISTE_LEADS TLEAD
LEFT JOIN INFOCE.INFO_SESAME_UTILISATEUR TUSER ON (TLEAD.UTILISATEURID = TUSER.IDUTILISATEUR)
LEFT JOIN INFOCE.INFO_SESAME_UTIL_SEC_EXTER TUSEREX ON (TUSER.IDUTILISATEUR = TUSEREX.IDUTILISATEUR)
LEFT JOIN INFOCE.INFO_SESAME_UTIL_SEC_INTER TUSERIN ON (TUSER.IDUTILISATEUR = TUSERIN.UTILISATEURID)

;

QUIT;

/* COMPILATION DES PROGRAMMES CI DESSUS */

PROC SQL; 
CREATE TABLE CIBLAGE AS

SELECT DISTINCT
TLEAD.*,
TSOC.*,
TUTIL.*

FROM WORK.LISTE_LEADS TLEAD
LEFT JOIN WORK.SOCIETE TSOC ON (TLEAD.PARENTID = TSOC.IDSOCIETE)
LEFT JOIN WORK.UTILISATEUR TUTIL ON (TLEAD.UTILISATEURID = TUTIL.IDUTILISATEUR)

;

QUIT;
PaigeMiller
Diamond | Level 26

Can you provide a few rows of your two data sets (WORK.VENTES_TOTALE and WORK.CIBLAGE), following these instructions: https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/

--
Paige Miller
CélineSBD17
Calcite | Level 5

Bonjour, 

 

Merci pour votre aide, mais c'est bon j'ai trouvé une solution à mon problème. 

J'ai modifié la rédaction de ma fonction. Et comme j'utilise ma table de sortie sur le logiciel TABLEAU SOFTWARE je peux filtrer mes données que je ne souhaite pas.

 

PROC SQL;
CREATE TABLE VENTES_CAMPAGNE AS 

SELECT DISTINCT
TVEN.SIREN,
TRESUL.UTILISATEURID,
TVEN.OFFRE_VENTES,
TVEN.FAMILLE_VENTES,
TVEN.DATE_VALIDE2 AS DATE_ED_VENTE,
TVEN.PRI_IC AS MONTANT_PRI_VENTE,
TRESUL.DATEFIN_CAMPAGNE,
/*intnx('dtmonth',TRESUL.DATECREATION_LEAD,+4) AS DFC_3 FORMAT=DATETIME16.,1er Methode */
TRESUL.DATECREATION_LEAD


FROM WORK.VENTES_TOTALE TVEN /* NOM DU PROGRAMME A MODIFIER LIGNE 596 */
LEFT JOIN WORK.CIBLAGE TRESUL ON (TRESUL.SIREN = TVEN.SIREN)
/*INNER JOIN WORK.RESUL_AFF_BASIC TRESUL ON (TRESUL.SIREN = TVEN.SIREN)*/
WHERE TVEN.DATE_VALIDE2 <= intnx('dtmonth',TRESUL.DATECREATION_LEAD,+4) /*2ème Methode 
GROUP BY 1,2,3*/

;
QUIT; 


DATA WORK.VENTES_CAMPAGNE ;
    SET WORK.VENTES_CAMPAGNE ;
    IF DATECREATION_LEAD >= DATE_ED_VENTE then delete ;
	/*IF DFC_3 <= DATE_ED_VENTE then delete ;1er Methode */
	/*IF DATECREATION_LEAD <= DATE_ED_VENTE then delete ;2ème Methode */
RUN ;

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Mastering the WHERE Clause in PROC SQL

SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 4 replies
  • 941 views
  • 0 likes
  • 2 in conversation