Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Script - Where champs < Week(Today())

Bonjour,

J'essaye de charger qu'une partie des données qui se trouve dans une (grosse) table, et donc je voudrais limité le chargement de données à 4 semaines à partir de la date du jour.

Voila ce que j'ai essayé de faire, mais il n'aime pas ma syntaxe et je n'arrive pas a en trouvé une autre.

ACHATS_INCIDENTS:

LOAD "ENREG_ID",

    "DEPOT_COD",

    "COMBSTO_ID",

    "CASE_ID",

    "LOTINT_COD",

    "SERIE_COD",

    "MVT_QT",

    "MVT_SENS",

    "MVT_DAT",

    Week(MVT_DAT) AS MVT_DAT_SEM,

    "MVT_AAAAMM",

    "MVTDETAIL_LIB",

    "IMPUTSTK_COD",

    "ORIGINE_COD",

    "STKARRET_QT",

    "TYPEMVT_COD",

    "ENTITEENT_COD",

    "EVENEMENT_ID",

    "FACVTE_OK",

    "ETIQ_NO",

    "QUANTIEME_VAL",

    "FAMINVTREQDAT_ID",

    "FORMULAIRESTK_NO",

    "TRF_NO",

    "DEPOT2_COD",

    "CLASSE1_LIB",

    "CLASSE2_LIB",

    "CLASSE3_LIB",

    "CLASSE4_LIB";

SQL SELECT *

FROM "ERP_CDI"."STO_HISTOMVT"

WHERE MVT_DAT_SEM > (Week(Today(1))-4);


MVT_DAT contient une date sous ce format : "AAAA-MM-DD 00:00:00"

Voici le message d'erreur :

SQL##f - SqlState: S0022, ErrorCode: 904, ErrorMsg: [Oracle][ODBC][Ora]ORA-00904: "WEEK" : identificateur non valide

Je me retrouve bredouille dans mes recherches, donc je fait appel à vous!

Merci de votre aide.

1 Solution

Accepted Solutions
pgrenier
Partner - Creator III
Partner - Creator III

Bonjour Thomas,

La raison pour laquelle vous avez cette erreur est que Oracle ne reconnait pas la fonction Week() que vous utilisez dans votre requête.

Cette reqûete en mode "pass-through" ne doit comprendre que des appels de fonctions reconnues par Oracle, tandis que la partie "Preceding LOAD" (avant l'instruction SQL SELECT) peut comprendre des fonctions QlikView.

Ainsi, pour obtenir les données des 4 dernières semaines, je vous proposerais d'utiliser le filtre suivant:

WHERE MVT_DAT >= Trunc(SYSDATE-28);  // 4 semaines

ou

WHERE MVT_DAT >= Trunc(Add_Months(SYSDATE, -1)); // 1 mois


Cordialement,


Philippe

View solution in original post

5 Replies
pgrenier
Partner - Creator III
Partner - Creator III

Bonjour Thomas,

La raison pour laquelle vous avez cette erreur est que Oracle ne reconnait pas la fonction Week() que vous utilisez dans votre requête.

Cette reqûete en mode "pass-through" ne doit comprendre que des appels de fonctions reconnues par Oracle, tandis que la partie "Preceding LOAD" (avant l'instruction SQL SELECT) peut comprendre des fonctions QlikView.

Ainsi, pour obtenir les données des 4 dernières semaines, je vous proposerais d'utiliser le filtre suivant:

WHERE MVT_DAT >= Trunc(SYSDATE-28);  // 4 semaines

ou

WHERE MVT_DAT >= Trunc(Add_Months(SYSDATE, -1)); // 1 mois


Cordialement,


Philippe

Not applicable
Author

Merci bien pour l'explication et la solution qui fonctionne très bien!

Cordialement,

Thomas.

Not applicable
Author

Bonjour,

J'ai une petite question SVP.

Je n'ai pas compris le -28 comment ça correpond à 4 semaine !

Merci d'avance

Not applicable
Author

Le -28 correspond au nombre de jour,

1 semaine = 7 jours

4*7=28

Voila tout

Not applicable
Author

Ah ok merci ^^