IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Prendre les 90 derniers jours [Débutant(e)]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut Prendre les 90 derniers jours
    Bonjour à tous,

    Je suis totalement novice en la matière mais j'ai un problème pour lequel je n'arrive pas à trouver de solution sur les forum.
    J'ai cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    SELECT   
      $SDBTMP$dbo.R_ActivityDetail.Date AS Jour
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.BeginTime,0) AS Debut
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.Duration,0) AS Duree
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.ActivityType,'0') AS ActivityType
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.DriverCode,'') AS Matricule
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.Identifier,'') AS Identifiant
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.CardNumber,'') AS Carte
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.LastName,'') +' ' + UPPER(LEFT(ISNULL($SDBTMP$dbo.R_ActivityDetail.Name,' '),1) )+'.' as Nom 
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.KmStart,'0') AS kmBegin
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.KmArrived,'0') AS kmEnd
     
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.KmValue,'0') AS km
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.VehicleCode,'') AS VehicleCode
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.VRN,'') AS Immat
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.VIN,'') AS VIN
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.GlossaryCode,'') AS GlossaryCode
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.GlossaryLabel,'') AS GlossaryLabel
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.BeginEndEEC,'') AS BeginEndEEC
     , ISNULL($SDBTMP$dbo.R_ActivityDetail.TravelerCoupure,'') AS TravelerCoupure
     
     
     FROM    $SDBTMP$dbo.R_ActivityDetail 
     INNER JOIN dbo.F_Person ON ($SDBTMP$dbo.R_ActivityDetail.ID_F_Person = dbo.F_Person.PK_FP)
     LEFT OUTER JOIN dbo.F_Enterprise ON dbo.F_Person.ID_FE_Enterprise = dbo.F_Enterprise.PK_FE
     
     WHERE     
     $PK_FENTERPRISE$
     and $PK_FPERSON$
     and $ENVIRONNEMENT_PERSON$dbo.F_Person.PK_FP  
     and $DATEENTRYPERIOD_PERSON$ 
     and $DATELEAVEPERIOD_PERSON$
     and (dbo.F_Person.Inactive = 0)
    and (($SDBTMP$dbo.R_ActivityDetail.Date >= CONVERT(DATETIME, '$PARAM_DATE_PERIOD_BEGIN$', 102)) AND ($SDBTMP$dbo.R_ActivityDetail.Date< CONVERT(DATETIME, '$FIELD_PARAM_DATE_PERIOD_END_NEXTDAY$', 102)) )
     
     
     ORDER BY dbo.F_Enterprise.Name, dbo.F_Person.LastName,  $SDBTMP$dbo.R_ActivityDetail.BeginTime

    Cette requête me permet d'alimenter en données une table dans un logiciel, cette requête nécessite que je fasse la sélection de la période dans mon logiciel.
    je voudrais que cette sélection de période soit automatisée sur la date du jour - 90 jours, la requête est lancée tous les jours pour alimenter un autre logiciel.
    En nombre de jours j'ai pu lire que cela pouvait être problématique (mois à 28,30,31 jours), c'est pourquoi je voulais prendre comme critère la date du jour en fin de période est la date du jour - 3 mois pour mon début de période.

    La définition de ma période doit se faire ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and (($SDBTMP$dbo.R_ActivityDetail.Date >= CONVERT(DATETIME, '$PARAM_DATE_PERIOD_BEGIN$', 102)) AND ($SDBTMP$dbo.R_ActivityDetail.Date< CONVERT(DATETIME, '$FIELD_PARAM_DATE_PERIOD_END_NEXTDAY$', 102)) )
    Mais je seche totalement sur comment réussir à modifier cette période pour qu'elle prenne mais 90 derniers jours ou 3 derniers mois de maniere automatique et plus en passant par mon soft où je dois préciser la période manuellement.

    Est-ce que quelqu'un pourrait m'aider? L'informaticien qui a réalisé cette requête n'est plus joignable et je suis dans le caca^^.

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Cette requêtes est une véritable horreur !
    Connaissez vous les alias de tables ?
    Connaissez-vous COALESCE ?

    Pour votre critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    and $SDBTMP$dbo.R_ActivityDetail.Date BETWEEN CAST(DATEADD(day, -90, CURRENT_TIMESTAMP) AS DATE)
                                             AND  CAST(CURRENT_TIMESTAMP AS DATE)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Malheureusement non je ne connais ni les alias ni coalesce je suis désolé je suis vraiment novice en programmation.

    pour tout vous dire il y a un batch qui lance cette requete dans lequel je peux également définir ma période, mais en recherchant sur les forum, il me semblait plus simple de modifier ma periiode dans la requete sql que dans le batch!

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/10/2008, 15h18
  2. Graphique: Prendre les 10 derniers enregistrements?
    Par alex830001 dans le forum Excel
    Réponses: 5
    Dernier message: 11/08/2008, 12h23
  3. prendre les 2 derniers car d'un AnsiString
    Par Mangacker dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 14/11/2007, 18h18
  4. [Dates] Afficher les 7 derniers jours
    Par fabien14 dans le forum Langage
    Réponses: 7
    Dernier message: 12/05/2007, 00h16
  5. Prendre les 3 derniers caractères
    Par Boolean69 dans le forum Access
    Réponses: 9
    Dernier message: 07/06/2006, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo