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 :

intersection des intervalles de date


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut intersection des intervalles de date
    Je souhaite créer une table permettant le calcul d'un indice à chaque modification des dates.
    indice = x + y + z , x et y et z ont chacune une date début et une date fin.
    la base de calcul est x (qui est tarif). Par exemple:

    x : 2008/15/01 .....2008/29/01
    y: 2008/10/01 ......2008/18/01
    z: 2008/25/01.......2008/29/01
    Je veux avoir comme sortie dans la nouvelle table:
    2008/15/01.... 2008/18/01 un indice1
    2008/18/01....2008/25/01 un indice 2
    2008/25/01....2008/29/01 un indice3
    j'ai pas d'idée comment aboutir à la solution? est ce que des composants SSIS peuvent me faciliter le tâche ou je peux y arriver avec des requêtes et un simple chargement.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Bonjour <--(j'en ai un en plus, je te le donne )

    Je ne suis pas sur d'avoir bien compris ton problème, et avec la DDL de ta table, ca aurait été plus facile. Il n'aurait pas été inutile de donner quelques précisions sur le but de tout ca, mais je pense que tu peux faire ca en une requete effectivement, en t'inspirant de ceci :

    Code sql : 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
     
    DECLARE @t TABLE(
    	id CHAR(1),
    	debut DATE, 
    	fin DATE
    )
     
    INSERT INTO @t VALUES('x','2008-01-15','2008-01-29')
    	, ('y', '2008-01-10', '2008-01-18')
    	,('z','2008-01-25','2008-01-29')
     
     
     
    ;WITH dte AS(
    	SELECT debut
    	FROM @t t1
    	UNION 
    	SELECT fin
    	FROM @t
    ),
    dteOK AS (
    	SELECT dte.debut, ROW_NUMBER() OVER(ORDER BY dte.debut) AS RN
    	FROM dte
    	INNER JOIN @t t
    		ON dte.debut BETWEEN t.debut AND t.fin
    	WHERE t.id = 'x'
    )
    SELECT d1.debut AS debut, d2.debut AS fin, d1.RN AS Indice
    FROM dteOK d1
    INNER JOIN dteOK d2 ON d1.RN  = d2.RN

    Par contre, créer une autre table me semble une mauvaise idée, crée plutôt une vue à partir de ta requete !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut
    Bonjour,
    bon,j'ai pas bien saisi votre idée.
    Mon problème c'est le calcul dans différents intervalles et à chaque intervalle une ligne s'ajoute c'à d :
    Ma source de données est une table comme suit :
    pk debx finx x deby finy y debz finz z
    1 2008/15/01 2008/29/01 2008/10/01 2008/18/01 2008/25/01 2008/29/01
    ....................................................................................................
    x, y et z sont des prix et non pas des indices de ligne.
    Résultat pour ce cas est :
    deb fin prix
    2008/15/01.... 2008/18/01 x+y
    2008/18/01....2008/25/01 x
    2008/25/01....2008/29/01 x+z

    le prix en résultat doit toujours contenir x et lui ajouter le prix y ou/et z
    si elle sont dans le même intervalle,si non j'affiche x avec les dates correspondantes!!!


    merci.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 03/03/2014, 16h16
  2. Requêtes sur des intervalles de dates
    Par Tidus159 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/05/2011, 16h43
  3. [XL-2007] Probl formule avec des intervales de dates
    Par alexandrek dans le forum Excel
    Réponses: 0
    Dernier message: 09/02/2011, 11h56
  4. [MySQL 5.5] Requete pour des intervalles de dates
    Par Kaldyris dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/04/2009, 18h50
  5. [Transact SQL] Comparer des intervales de dates
    Par jowsuket dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/05/2008, 11h25

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