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

Langage SQL Discussion :

SQL, sortir données entre deux dates


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut SQL, sortir données entre deux dates
    Bonjour, je travaille en ce moment à la rapidité des données et j'aurais aimé savoir si il était possible d'avoir un peu d'aide votre part.
    J'importe donc toutes les données avec cette requête SQL :

    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
    SELECT     MDP.Maintenance_Department_Name AS Département, MWO.Main_WO_nr AS OT_Principal, DPT.Teamcode_Name AS Equipe, WTM.Worktime_Name AS Poste, 
                          DTE.YearOfWeek AS Annee, MWO.WO_Reference AS Référence, DTE.Week AS Semaine, PCD.Date AS Taget_Date, ACD.Date AS Date_fin_réelle, 
                          RSD.Date AS DateDebutSouhaitee, MWO.WO_nr AS [n°OT], DIS.Discipline_Name AS Discipline, CDT.Date AS Date_de_création, PER.Personnel_Name AS Exécutant, 
                          MWO.Work_Description_Actual_Extra AS A_faire, MWO.Work_Description_Actual AS Remarques, MWO.Work_Description_from_Planner AS Desciption_AL, 
                          MWO.Planned_Shutdown_Minutes AS Temps_Arrêt, FAI.Failure_Name AS Cause, SYM.Symptom_Name AS Symptôme, ACT.Action_Name AS Action, 
                          MWO.WO_Name AS Action_AL, MWO.Object_Id AS [Code équipement], OBJ.Object_Name AS Equipement, SWO.Standard_WO_Nr AS [Activité Standard], 
                          ROUND(CONVERT(FLOAT, dbo.BI_Maintenance_Manpower.Total_Minutes) / 60, 2) AS [Heures Planifiées], ROUND(CONVERT(FLOAT, MWO.Rest_Minutes) / 60, 2) 
                          AS [Heures Restantes], MWO.WO_Status AS Status, MDP.Maintenance_Department AS CodeDépartement, DPT.Teamcode AS CodeEquipe, 
                          WTM.Worktime AS CodePoste, DTE.Date AS DateFinSouhaitee, TOW.Type_of_Work AS CodeTypedetravail, TOW.Type_of_Work_Name AS [Type de travail], 
                          ROUND(CONVERT(FLOAT, POU.Tempsrealisation) / 60, 2) AS [Heures Réalisées], MWO.WO_Status
    FROM         dbo.BI_Maintenance_Workorders AS MWO INNER JOIN
                          dbo.BI_Workorders AS WOS ON MWO.WO_nr = WOS.WO_nr LEFT OUTER JOIN
                          dbo.BI_Maintenance_Manpower ON MWO.WO_nr = dbo.BI_Maintenance_Manpower.WO_nr LEFT OUTER JOIN
                          dbo.BI_Objects AS OBJ ON MWO.Object_Id = OBJ.Object_Id LEFT OUTER JOIN
                          dbo.BI_Disciplines AS DIS ON MWO.Discipline = DIS.Discipline_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Failures AS FAI ON MWO.Failure = FAI.Failure_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Symptoms AS SYM ON MWO.Symptom = SYM.Symptom_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Actions AS ACT ON MWO.Action = ACT.Action_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Persons AS PER ON MWO.Personnel_Id_Who_Does_it = PER.Personnel_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Date AS DTE ON MWO.Requested_Completion_Date = DTE.Date_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Date AS PCD ON MWO.Planned_Completion_Date = PCD.Date_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Date AS RSD ON MWO.Requested_Start_Date = RSD.Date_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Date AS ACD ON MWO.Actual_Completion_Date = ACD.Date_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Date AS CDT ON MWO.Creation_Date_Time = CDT.Date_Unique_Id LEFT OUTER JOIN
                          dbo.V_BI_OT_TT_CHAMP_TEMPS AS POU ON MWO.WO_nr = POU.Wo_nr LEFT OUTER JOIN
                          dbo.BI_Types_of_Work AS TOW ON MWO.Type_of_Work = TOW.Type_of_Work_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Department_Teams AS DPT ON MWO.Teamcode = DPT.Teamcode_Unique_id LEFT OUTER JOIN
                          dbo.BI_Worktimes AS WTM ON MWO.Worktime = WTM.Worktime_Unique_id LEFT OUTER JOIN
                          dbo.BI_Maintenance_Departments AS MDP ON MWO.Maintenance_Department = MDP.Maintenance_Department_Unique_Id LEFT OUTER JOIN
                          dbo.BI_Standard_WO AS SWO ON MWO.Standard_WO_Nr = SWO.Standard_WO_Nr_Unique_Id
    WHERE     (MWO.WO_Status <> 33) AND (TOW.Type_of_Work IN ('AL')) AND (MDP.Maintenance_Department IN ('PR')) AND (RSD.Date > DATEADD(mm, - 24, GETDATE())) AND 
                          (LEFT(MWO.WO_Reference, 4) = 'PRAL' OR
                          LEFT(MWO.WO_Reference, 5) = 'PR-AL' OR
                          LEFT(MWO.WO_Reference, 4) = 'ALPR' OR
                          LEFT(MWO.WO_Reference, 5) = 'AL PR' OR
                          LEFT(MWO.WO_Reference, 5) = 'PR AL') AND (MWO.WO_Status <> 33)
    Mais j'aimerais uniquement sortir les données entre l'année actuelle et l'année précédente via le champ mis en gras dans la citation.
    J'ai pensé à utiliser la fonction between mais sans succès.

    j'ai mis à la fin :
    AND Annee BETWEEN(2013 AND 2014)
    Cependant je ne sais pas comment récupérer l'année en cours en SQL.
    Merci beaucoup de votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par Nemesis-fr Voir le message
    Cependant je ne sais pas comment récupérer l'année en cours en SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXTRACT(YEAR FROM CURRENT_DATE)
    Par ailleurs, BETWEEN est un opérateur, pas une fonction. Il ne faut pas mettre de parenthèses autour de l'intervalle.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                         LEFT(MWO.WO_Reference, 5) = 'FA-AL') AND (MWO.WO_Status <> 33)
     AND Annee BETWEEN (EXTRACT(YEAR FROM CURRENT_DATE))-1 AND EXTRACT(YEAR FROM CURRENT_DATE)
    En essayant votre méthode je n'ai pas réussi à faire fonctionner ma fonction, pourriez vous m'aider svp.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par Nemesis-fr Voir le message
    je n'ai pas réussi à faire fonctionner ma fonction
    Qu'est-ce que cela signifie ?
    Ta requête ne donne pas le résultat attendu ?
    Tu reçois un message d'erreur ? Lequel ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 53
    Par défaut
    Encore désolé je me suis trompé de terme, donc en rajoutant la ligne comme je l'explique dans mon précédent message il me met une erreur :
    Je suis sous Windows server 2003.

    Il me met cette erreur lorsque je veux enregistrer :

    Error in list of function arguments: 'FROM' not recognized.
    Unable to parse query text.
    Puis lorsque j’appuie sur ce message :

    Incorrect syntaxe near the keyword FROM
    Je vous remercie al1_24 de prendre du temps à m'aider.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    La forme EXTRACT(YEAR FROM CURRENT_DATE) correspond au standard ANSI, que j'utilise par défaut lorsque le SGBD visé n'est pas mentionné dans la discussion.
    SQL Server ne respecte pas la norme sur ce point.
    Toutefois, je ne connais pas suffisamment le dialecte de ce SGBD pour te donner la correspondance.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. [2014] Calcul de données entre deux dates indéfinies + heure
    Par nLineMayuri dans le forum Développement
    Réponses: 6
    Dernier message: 01/06/2015, 17h06
  2. Calcul de Données entre deux dates
    Par fokher dans le forum Requêtes
    Réponses: 0
    Dernier message: 06/01/2014, 10h13
  3. Probleme vb6 et crystal report (données entre deux dates)
    Par weboxdev dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/01/2013, 14h06
  4. selection de donnée entre deux date
    Par chalcol dans le forum Oracle
    Réponses: 3
    Dernier message: 11/03/2009, 10h23
  5. [SQL Server] Sélection entre deux dates
    Par Gabrielly dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/06/2006, 14h51

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