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

MS SQL Server Discussion :

SQL SRV : créer un champ date de fin à partir de la valeur de la ligne suivante


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut SQL SRV : créer un champ date de fin à partir de la valeur de la ligne suivante
    Bonjour,

    Je souhaite créer un champ DATE_FIN dans une vue à partir d'une table qui contient les informations suivantes :

    CD_ARTICLE DATE_TRANSAC PRIX
    A100 20070221 10
    A100 20070301 12
    A100 20070315 11
    A100 20070320 12

    Je souhaite obtenir la vue suivante :
    CD_ARTICLE DATE_TRANSAC PRIX DATE_FIN
    A100 20070221 10 20070301
    A100 20070301 12 20070315
    A100 20070315 11 20070320
    A100 20070320 12

    L'idée est d'alimenter la colone DT_FIN avec la DT_TRANSACTION supérieure minimum afin de créer une plage de validité du PRIX pour un article.

    Merci pour vos conseils.

  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 847
    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 847
    Points : 52 955
    Points
    52 955
    Billets dans le blog
    6
    Par défaut
    Il faut utiliser une non équi auto jointure externe et faire un max sur la date :
    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
     
    CREATE TABLE ALACON 
    (CD_ARTICLE CHAR(4), 
     DATE_TRANSAC DATETIME, 
     PRIX FLOAT)
     
    INSERT INTO ALACON VALUES ('A100', '20070221', 10)
    INSERT INTO ALACON VALUES ('A100', '20070301', 12)
    INSERT INTO ALACON VALUES ('A100', '20070315', 11)
    INSERT INTO ALACON VALUES ('A100', '20070320', 12)
     
    SELECT T1.CD_ARTICLE, T1.DATE_TRANSAC AS DATE_DEBUT, MIN(T2.DATE_TRANSAC) AS DATE_FIN, T1.PRIX
    FROM   ALACON T1
           LEFT OUTER JOIN ALACON T2
                 ON T1.CD_ARTICLE = T2.CD_ARTICLE
                    AND T1.DATE_TRANSAC < T2.DATE_TRANSAC
    GROUP  BY T1.CD_ARTICLE, T1.DATE_TRANSAC, T1.PRIX
     
    CD_ARTICLE DATE_DEBUT       DATE_FIN                     PRIX                                                  
    ---------- ---------------- ---------------------------- ----------------
    A100       2007-02-21       2007-03-01 00:00:00.000      10.0
    A100       2007-03-01       2007-03-15 00:00:00.000      12.0
    A100       2007-03-15       2007-03-20 00:00:00.000      11.0
    A100       2007-03-20       NULL                         12.0
    la prochaine fois, merci de respecter la charte de postage et de mettre le DDL de vos tables ainsi qu'un jeu d'essais de façon à reproduire chez nous votre contexte.

    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Merci pour la solution
    Merci beaucoup pour la solution.
    Je tiens compte de vos remarques pour les demandes futures.

    Cordialement.

Discussions similaires

  1. créer un champ date
    Par SonnyFab dans le forum Sql Developer
    Réponses: 1
    Dernier message: 13/07/2010, 14h54
  2. Réponses: 1
    Dernier message: 27/06/2010, 07h39
  3. Réponses: 5
    Dernier message: 23/02/2010, 14h32
  4. Réponses: 11
    Dernier message: 05/12/2008, 16h10
  5. Réponses: 3
    Dernier message: 28/08/2006, 16h14

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