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

SQL Firebird Discussion :

Aide sur requete soustraction


Sujet :

SQL Firebird

  1. #1
    Membre habitué
    Aide sur requete soustraction
    Bonjour

    Voici les extraits d'une table

    DATE TYPE VALEUR
    1/1/2010 C 1000
    1/1/2010 D 100
    1/1/2010 E 10
    1/2/2010 C 1100
    1/2/2010 D 120
    1/2/2010 E 12

    Je cherche à retourner la différence entre 2 mois pour chaque type
    ca donnerait

    DIFF TYPE
    100 C
    20 D
    2 E

    Comment pourrais je faire ca en SQL?

    Merci pour votre aide

  2. #2
    Membre expert
    la fonction DATEDIFF() devrait aider non ?
    http://www.firebirdsql.org/refdocs/l...-datediff.html
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre habitué
    Bonjour Philippe,

    Je ne veux pas connaitre la différence entre les dates mais la différence entre le champ VALEUR

    Merci

  4. #4
    Expert éminent sénior
    Salut

    Avec quelque chose comme ça ?
    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
    WITH
        START_PERIOD AS (
            SELECT F_TYPE, F_VALUE AS F_START
            FROM TEST
            WHERE
                EXTRACT(YEAR FROM F_DATE) = :START_YEAR AND
                EXTRACT(MONTH FROM F_DATE) = :START_MONTH
        ),
     
        END_PERIOD AS (
            SELECT F_TYPE, F_VALUE AS F_END
            FROM TEST
            WHERE
                EXTRACT(YEAR FROM F_DATE) = :END_YEAR AND
                EXTRACT(MONTH FROM F_DATE) = :END_MONTH
        )
     
    SELECT
        S.F_TYPE, S.F_START, E.F_END, E.F_END - S.F_START AS PERIOD_DIFF
    FROM
        START_PERIOD S JOIN END_PERIOD E
        ON S.F_TYPE = E.F_TYPE


    @+

  5. #5
    Membre habitué
    Merci