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

SQL Oracle Discussion :

Requête sur la date de l'année courante et celle d'avant


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Requête sur la date de l'année courante et celle d'avant
    Bonjour

    J'ai une requête que je doit écrire de la manière suivante :

    J'ai une table facture (Identite_Client, Facture_No, date_facture, Prix_Facture) que je requête. Je doit retourner La somme des prix des facture sur l'année (n), (n-1) et (n-2) par rapport à chaque client.

    Je sais faire en donnant des valeurs en dure dans la clause where mais par contre comme lui dire a chaque fois qu'il prend la date en cours pour n, soustrait 1 pour (n-1) et soustrait 2 pour (n-2)

    Merci à vous

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Peux-tu nous montrer ta requête ? (la partie où tu filtres sur les dates, c'est le plus important)
    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
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    And extract(year from date_facture) between extract(year from sysdate) - 2 and extract(year from sysdate)

  4. #4
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut oui
    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
     
    SELECT 
            CAST("IDENTITY_PAY_INFO_CU_QRY\"."IDENTITY" AS VARCHAR(30)) AS CODE_CLIENT, 
            CAST("IDENTITY_PAY_INFO_CU_QRY\"."BALANCE" AS DECIMAL(13,2)) AS CLI_SOLD, 
            CAST("LEDGER_ITEM_CU_DET_QRY\"."INV_AMOUNT" AS DECIMAL(13,2)) AS CLI_ENCOURS, 
            CAST(NULL AS DECIMAL(11,2)) AS SIT_CA_N,
            CAST(NULL AS DECIMAL(11,2)) AS SIT_CA_N1,
            CAST(NULL AS DECIMAL(11,2)) AS SIT_CA_N2,
            CAST(NULL AS VARCHAR(10)) AS ID_CLIENT
     FROM   
            "IFSAPP"."IDENTITY_PAY_INFO_CU_QRY" "IDENTITY_PAY_INFO_CU_QRY\" 
            INNER JOIN "IFSAPP"."LEDGER_ITEM_CU_DET_QRY" "LEDGER_ITEM_CU_DET_QRY\" 
            ON ((("IDENTITY_PAY_INFO_CU_QRY\"."COMPANY"="LEDGER_ITEM_CU_DET_QRY\"."COMPANY") 
            AND ("IDENTITY_PAY_INFO_CU_QRY\"."IDENTITY"="LEDGER_ITEM_CU_DET_QRY\"."IDENTITY")) 
            AND ("IDENTITY_PAY_INFO_CU_QRY\"."PARTY_TYPE"="LEDGER_ITEM_CU_DET_QRY\"."PARTY_TYPE")) 
            AND ("IDENTITY_PAY_INFO_CU_QRY\"."PARTY_TYPE_DB"="LEDGER_ITEM_CU_DET_QRY\"."PARTY_TYPE_DB")
     WHERE 
            ("LEDGER_ITEM_CU_DET_QRY\"."LEDGER_DATE">=TO_DATE ('01-01-2014 00:00:00', 'DD-MM-YYYY HH24:MI:SS') AND "LEDGER_ITEM_CU_DET_QRY\"."LEDGER_DATE"<TO_DATE ('01-04-2014 00:00:00', 'DD-MM-YYYY HH24:MI:SS'))
    J'arrive a faire le tri sur la clause where, mais moi mon souhait et de faire le tri dans le select, ceci pour des raisons strictement fonctionnelles.

    Merci

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est un outil qui génère cette requête ? Parce que pour aller mettre des antislashs dans les alias de table il faut être un peu tordu !

    Sinon faites quelque chose comme ceci :
    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
      SELECT CAST(ipi."IDENTITY"   AS VARCHAR2(30))  AS CODE_CLIENT
           , CAST(ipi."BALANCE"    AS DECIMAL(13,2)) AS CLI_SOLD
           , CAST(lid."INV_AMOUNT" AS DECIMAL(13,2)) AS CLI_ENCOURS
           , <ID_CLIENT>                             AS ID_CLIENT
           , sum(case
                   when lid."LEDGER_DATE" >= trunc(sysdate, 'yyyy')
                   then <PRIX_FACTURE>
                   else 0
                 end) as SIT_CA_N
           , sum(case
                   when lid."LEDGER_DATE" >= trunc(sysdate, 'yyyy') - interval '1' YEAR
                    and lid."LEDGER_DATE" <  trunc(sysdate, 'yyyy')
                   then <PRIX_FACTURE>
                   else 0
                 end) as SIT_CA_N1
           , sum(case
                   when lid."LEDGER_DATE" >= trunc(sysdate, 'yyyy') - interval '2' YEAR
                    and lid."LEDGER_DATE" <  trunc(sysdate, 'yyyy') - interval '1' YEAR
                   then <PRIX_FACTURE>
                   else 0
                 end) as SIT_CA_N2
        FROM "IFSAPP"."IDENTITY_PAY_INFO_CU_QRY" ipi
        JOIN "IFSAPP"."LEDGER_ITEM_CU_DET_QRY"   lid
          ON lid."COMPANY"       = ipi."COMPANY"
         AND lid."IDENTITY"      = ipi."IDENTITY"
         AND lid."PARTY_TYPE"    = ipi."PARTY_TYPE"
         AND lid."PARTY_TYPE_DB" = ipi."PARTY_TYPE_DB"
       WHERE lid."LEDGER_DATE"  >= trunc(sysdate, 'yyyy') - interval '2' YEAR
         AND lid."LEDGER_DATE"  <  trunc(sysdate, 'mm')
    group by CAST(ipi."IDENTITY"   AS VARCHAR2(30))
           , CAST(ipi."BALANCE"    AS DECIMAL(13,2))
           , CAST(lid."INV_AMOUNT" AS DECIMAL(13,2))
           , <ID_CLIENT>;

  6. #6
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci waldar
    Pour les antislash, je travail avec crystal report, et pour intégrer ces editions dans un ERP (IFS), il demandent a ce qu'on ajoute les antislash. donc ce n'est pas du tout tordu ..lol

    merci pour la réponse.

Discussions similaires

  1. [SQL] Requête sur les dates
    Par JohnnyWalk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/12/2007, 19h24
  2. Mysql requête sur des dates
    Par lampre dans le forum Requêtes
    Réponses: 10
    Dernier message: 19/12/2006, 11h50
  3. [Conception] Requête sur des dates pour stats
    Par vallica dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2006, 10h15
  4. [MySQL] Problème de requête sur des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2006, 13h08
  5. Requête sur champ DATE
    Par bud_gw dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/12/2005, 13h18

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