Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour
J'aimerai rajouter un champ via mon script qui est constitué par une différence de date. Les deux dates en question sont fonction d'un autre champ: "ETAT". Voici mon script à l'heure actuelle:
SQL SELECT
DATECREATION,
DATEANNULATION,
DATEMISEAJOUR,
DATEMISEENINSTANCE,
DATEREFUS,
DATEVALIDATION,
CLIENT as Client,
CLIENTID as [Id Client],
ETATPEC as [Etat de PEC],
Case
When ETATPEC = "Refusee"
Then DATEDIFF(day, DATEREFUS, DATECREATION) as [Durée de traitement]
End
"MODE RECEPTION" as [Mode de réception],
MOTIFMISEENINSTANCE as [Motif de mise en instance],
MOTIFREFUS as [Motif de refus],
MOTIFREFUSID as [Id Motif de refus],
SPHERE as Sphère,
SOUSGROUPE as [Sous groupe],
SOUSGROUPEID as [Id Sous groupe],
"TYPE PEC" as [Type de PEC],
TYPEDEMANDE as [Type de demande],
NBRE as Volume
FROM "ma table";
Ce script me renvoie ErrorMsg: Syntaxe incorrecte vers le mot clé 'as'.
Quelle est la bonne manière de procéder ? Un if ? Un case ? Ne faut-il pas que j'emploie 'as' ?
Cordialement
On se trouve dans la requête SQL, tu ne peux donc utiliser que des fonctions SQL, donc pas de if.
Il faut faire comme ceci :
Case ETATPEC
When 'Refusee' Then
Case
When DATEMISEENINSTANCE IS NULL
Then DATEDIFF(day, DATEREFUS, DATECREATION)
Else DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION)
End
End as [Durée de traitement],
Bonjour Bertrand,
Ton as doit être mis après le end.
Il manque aussi la virgule.
De plus, comme tu n'as qu'un cas, tu peux utiliser le IF.
Merci pour ta réponse.
En fait c'est un peu plus compliqué sur ça.
Case
When ETATPEC = 'Refusee'
Then
if DATEMISEENINSTANCE IS NULL
SELECT DATEDIFF(day, DATEREFUS, DATECREATION)
else
SELECT DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION)
End as [Durée de traitement],
Voici un bout de mon script mais j'ai encore une erreur ...
Ta syntaxe n'est pas bonne pour le IF.
Essaie avec celle-ci :
if(DATEMISEENINSTANCE IS NULL,DATEDIFF(day, DATEREFUS, DATECREATION),DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION))
J'avais déjà essayé. Ça me renvoie: ErrorMsg: Syntaxe incorrecte vers ','.
ETATPEC as [Etat de PEC],
Case
When ETATPEC = 'Refusee'
Then
if(DATEMISEENINSTANCE IS NULL,DATEDIFF(day, DATEREFUS, DATECREATION),DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION))
End as [Durée de traitement],
Avec des if imbriqués, ça doit fonctionner :
If(ETATPEC = 'Refusee', if(DATEMISEENINSTANCE IS NULL,DATEDIFF(day, DATEREFUS, DATECREATION),DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION)))
as [Durée de traitement],
Même erreur malheureusement
Peux-tu mettre l'intégralité de ton script ?
SET ThousandSep=' ';
SET DecimalSep=',';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep=',';
SET MoneyFormat='# ##0,00 €;-# ##0,00 €';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DDMMYYYY';
SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
SET FirstMonthOfYear=1;
SET CollationLocale='fr-FR';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';
SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';
LOAD
*,
Date(Date#(DATECREATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de création],
Date(Date#(DATEANNULATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date d'annulation],
Date(Date#(DATEMISEAJOUR, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de mise à jour],
Date(Date#(DATEMISEENINSTANCE, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de mise en instance],
Date(Date#(DATEREFUS, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de refus],
Date(Date#(DATEVALIDATION, 'YYYY-MM-DD'), 'DD/MM/YYYY') as [Date de validation];
SQL SELECT
DATECREATION,
DATEANNULATION,
DATEMISEAJOUR,
DATEMISEENINSTANCE,
DATEREFUS,
DATEVALIDATION,
CLIENT as Client,
CLIENTID as [Id Client],
ETATPEC as [Etat de PEC],
// If(ETATPEC = 'Refusee', if(DATEMISEENINSTANCE IS NULL,DATEDIFF(day, DATEREFUS, DATECREATION),DATEDIFF(day, DATEMISEENINSTANCE, DATECREATION)))
"MODE RECEPTION" as [Mode de réception],
MOTIFMISEENINSTANCE as [Motif de mise en instance],
MOTIFREFUS as [Motif de refus],
MOTIFREFUSID as [Id Motif de refus],
SPHERE as Sphère,
SOUSGROUPE as [Sous groupe],
SOUSGROUPEID as [Id Sous groupe],
"TYPE PEC" as [Type de PEC],
TYPEDEMANDE as [Type de demande],
NBRE as Volume
FROM "TP3G-AUTO".dbo."GTO-Sonde-PEC-V6";
DROP Fields DATECREATION, DATEANNULATION, DATEMISEAJOUR, DATEMISEENINSTANCE, DATEREFUS, DATEVALIDATION;
// Calendrier de création
TempCreation:
Load
min([Date de création]) as minDateCreation,
max([Date de création]) as maxDateCreation
Resident [GTO-Sonde-PEC-V6];
Let varMinDateCreation = Num(Peek('minDateCreation', 0, 'TempCreation'));
Let varMaxDateCreation = Num(Peek('maxDateCreation', 0, 'TempCreation'));
DROP Table TempCreation;
TempCalendarCreation:
LOAD
$(varMinDateCreation) + Iterno()-1 As Num,
Date($(varMinDateCreation) + IterNo() - 1) as TempDateCreation
AutoGenerate 1
While $(varMinDateCreation) + IterNo() -1 <= $(varMaxDateCreation);
[Calendrier de création]:
Load
TempDateCreation AS [Date de création],
Ceil (Month(TempDateCreation)/3) as [Trimestre de création],
Month(TempDateCreation) as [Mois de création],
// Libellés
WeekDay(TempDateCreation)&' '&date(TempDateCreation,'DD-MMM-YYYY') as [Libellé date de création],
WeekYear(TempDateCreation)&' semaine '&Week(TempDateCreation) as [Libellé semaine de création ISO], //ISO
// Year(TempDateCreation)&' semaine '&Week(TempDateCreation) as [Libellé semaine de création Américain], //Américain
MonthName(TempDateCreation) as [Libellé mois de création],
QuarterName(TempDateCreation) as [Libellé trimestre de création],
YearName(TempDateCreation) as [Libellé année de création],
// Valeur numérique continue par période
AutoNumber(WeekStart(TempDateCreation), 'SemaineCréation') as [Semaine num de création ISO], //ISO
// AutoNumber(Year(TempDateCreation)*100 + Week(TempDateCreation), 'SemaineCréation') as [Semaine num de création Américain], //Américain
AutoNumber(MonthStart(TempDateCreation), 'MoisCréation') as [Mois num de création],
AutoNumber(QuarterStart(TempDateCreation), 'TrimestreCréation') as [Trimestre num de création],
Year(TempDateCreation) as [Année num de création]
Resident TempCalendarCreation
Order By TempDateCreation ASC;
Drop Table TempCalendarCreation;
Rename Table "GTO-Sonde-PEC-V6" to "PEC";
Mais celui ci s’exécute correctement quand je commente la partie conditionnelle comme ci-dessus.Je pense donc que ça vient nécessairement de cette partie.