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 :

[SQL2005] Requête SQL qui m'embête


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut [SQL2005] Requête SQL qui m'embête
    Bonjour à tous!

    Je me demande simplement comment ajouter un where à la requête SQL suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     Location, GSDC_Name, PA_Name, CA_Name, [Week of Availability] AS [Week], MAX([Date of entry]) AS [Date of entry]
                                FROM          dbo.VIEWLatestYear ta2
                                GROUP BY Location, GSDC_Name, PA_Name, CA_Name, [Week of Availability]
    à ce code, je veux ajouter un where qui dit "où [Date of entry] date de moins de 2 semaines"

    c'est probablement simple mais je ne trouve pas comment faire.

    Merci de votre aide!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Bonsoir,

    Deux fonctions vont te permettre de répondre à ton besoin :

    GETDATE() qui te renvoi la date du jour
    DATETADD() qui rajoute un intervalle à la date specifiée

    Cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Location, GSDC_Name, PA_Name, CA_Name, [Week of Availability] AS [Week], 
    MAX([Date of entry]) AS [Date of entry]
    FROM dbo.VIEWLatestYear ta2
    WHERE [Date of entry] >DATEADD(WEEK,-2,GETDATE())
    GROUP BY Location, GSDC_Name, PA_Name, CA_Name, [Week of Availability]
    Attention, on tient compte ici des heures et des minutes

    Plus d'nfo ici : http://baptiste-wicht.developpez.com...-sql/datetime/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    oh, parfait! merci beaucoup, c'est exactement ce que je voulais.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    oh, non ca n'est pas exactement ce que j'ai besoin après tout. Il faut que ce soit moins de deux semaines de travail, ou semaine de l'année si tu préfères.

    Exemple, d'aujourd'hui à Samedi les données valides seraient celles dont l'entrée est datée de Lundi dernier ou plus tard.

    J'ai regardé le lien que tu m'as donné mais je n'ai pas vu de fonction qui faisait cela facilement. Existe-t-il quelque chose pour faire cela?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    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 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    Oui, un modèle de données adapté...

    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/gestiontemps/

    A +

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Quel dommage ; te voilà obligé de faire du bricolage !

    La réponse à ta question se trouve dans le chapitre "VIII. Recherche sur une partie de date" du document dont je te parlais.

    Cherches du coté de la fonction DATEPART avec WEEKDAY en paramètre. Tu devra surement spécifier au début de ta transaction le premier jour de la semaine grâce à SET DATEFIRST.

    La meilleure solution etant, comme on te l'a suggéré, de reprendre ton modèle de donnée

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    bon, me voila revenu de voyage alors je peux finir de travailler sur ce problème. Bonne année à tous en passant!

    Bon j'ai regardé ce lien, et j'ai quelques questions:

    Tout d'abord, il y a cet astérisque en ce qui concerne les semaines: (*) attention, ce numéro de semaine n'est pas celui de la définition ISO des semaines et ne convient pas à nos calendriers.

    qu'est-ce que cela signifie? Je n'en suis pas du tout certain et je n'ai pas trouvé la réponse.

    Ensuite, une petite question de débutant: dans ce même chapitre il y a des exemples qui sont en UDF. Où dans SQL server tapons-nous ce code?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Bonjour,

    Concernant ta question sur les semaines iso, cela est expliqué dans le papier de SQLPRO. Je le cite :
    ATTENTION : La numérotation des semaines est standardisée depuis 1976 par l'ISO, avec les règles suivantes :

    * Le lundi est considéré comme le premier jour de la semaine.
    * Les semaines d'une même année sont numérotées de 01 à 52 (parfois 53).
    * La semaine qui porte le numéro 01 est celle qui contient le premier jeudi de janvier.
    * Il peut exister une semaine n°53 (années communes finissant un jeudi, bissextiles finissant un jeudi ou un vendredi).

    La numérotation des semaines aux USA, comme la numérotation des jours diffère totalement de cette norme !
    Pour la deuxième partie de ta question, les UDF sont des fonctions écrites par le developpeur dont la syntaxe est de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE FUNCTION ma_fonction (ma_variable@ datetime)
    RETURNS int
    AS
         BEGIN
                DECLARE @Resultat int
     
                 -- traitement ....
     
                RETURN(@Resultat )
     
         END
    Il suffit d'executer ce code dans l'analyseur de requête. Tu retrouveras celles que tu as créé dans l'explorateur d'object , rubrique 'Fonctions'.

    Fais une recherche là dessus, ce n'est pas la littérature qui manque.

    ++

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    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 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    la version 2008 de SQL Server propose une fonction SEMAINE ISO !

    A +

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Parfait, avec votre aide j'en suis venu à bout

    merci à tous!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL2005] Requête SQL qui m'embête
    Par Dohmaker dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/01/2008, 22h24
  2. Exécution d'une requête SQL qui affiche un message
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/11/2006, 16h15
  3. [MySQL] Requête SQL qui zappe la premiere ligne
    Par mulbek dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/01/2006, 16h24
  4. Réponses: 2
    Dernier message: 06/06/2005, 15h13
  5. Requête SQL qui me bloque
    Par David Guillouet dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/04/2004, 14h52

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