0
votes

Oracle: Sélection des sommes à partir de colonnes à la fois: YTD (année à ce jour), YTD fiscal

Je suis relativement nouveau à Oracle et je passe la meilleure partie de la journée à essayer d'écrire une requête pour renvoyer les totaux YTD et YTD fiscal sur une colonne.

Une version simplifiée de la table avec uniquement des looks de colonnes pertinentes Quelque chose comme: xxx

Lorsqu'une commande est une charge récurrente qui réapparaît dans chaque facture basée sur la logique ailleurs. Ce que j'ai besoin de revenir, c'est le coût total pour une facture donnée avec le total de la YTD pour le code de commande ainsi que le YTD fiscal (début 1er novembre) pour chaque code de commande. Pour cet exemple de jeu, ma requête devrait revenir à la facture 509: xxx

à partir de maintenant, tout ce que j'ai est: xxx < P> Mes tentatives de YTD ont échoué jusqu'à présent mais l'environnement de développement dispose également de données très mauvaises, donc il n'y a pas de moyen réel de la tester. À l'heure actuelle, je prévois de créer une table Temp avec de fausses données pour essayer de comprendre cela.

Modifier pour la clarté : la requête doit renvoyer les totaux YTD pour la date de facturation donnée. Par exemple, étiez-moi à interroger, en 2020, une facture de mai 2018, il devrait renvoyer les totaux YTD pour chaque commande_code contenue dans cette facture de janvier 2018 - mai 2018


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser agrégation conditionnelle tel que xxx

en fonction de modifier dans la question, utilisez un jointure croix parmi votre table et dérivé invoice_date à partir de : invoice_num Variable de liaison: xxx

Démo


4 commentaires

Ceci est en fait assez proche de ce que j'avais (en ce qui concerne YTD car je n'avais pas encore aventuré au fiscal YTD). Cela a peut-être pu être quelque chose que j'ai échoué à clarifier mais je ne suis pas garanti d'exécuter la requête dans le même délai que la facture_date. Il semble que l'utilisation de sysdate retournerait un total de YTD incorrect si je pouvais sélectionner une facturation_num survenue dans, disons, 2018. Pensées? Merci!


Il suffit de remplacer sysdate (date actuelle) avec une valeur de date littéral à partir de 2018, Date'2018-04-05 ', alors vous obtiendriez le coût de la gamme Date'2017-11-01' et date'2018-10-31 'En tant que fiscal_ytd, et pour la gamme Date '2018-01-01' et date'2018-10-31 'comme YTD_TOTAL, par exemple, vous pouvez sélectionner de manière dynamique à partir de l'année actuelle et / ou des années précédentes @Michaelcole


Cette instruction SELECT sera exécutée en tant que requête hibernate qui n'a donc que la facture_num, est-il un moyen de, d'abord, obtenez la facture Invoice_Date de cette facture, puis utilisez cette date particulière plutôt que de sysdate ou une date de saisie manuelle?


Sinon, je pourrais avoir une requête séparée saisir la facture_date puis passer cette date dans la requête que vous avez fournie. Je voulais juste voir s'il y a un moyen de retirer l'homme du milieu ici.



0
votes

Vous pouvez utiliser agrégation conditionnelle comme suit: xxx

Cette solution utilisera des index sur le invoice_date s'il y en a. < / p>

acclamations !!


1 commentaires

Ceci est en fait assez proche de ce que j'avais (en ce qui concerne YTD car je n'avais pas encore aventuré au fiscal YTD). Cela a peut-être pu être quelque chose que j'ai échoué à clarifier mais je ne suis pas garanti d'exécuter la requête dans le même délai que la facture_date. Il semble que l'utilisation de sysdate retournerait un total de YTD incorrect si je pouvais sélectionner une facturation_num survenue dans, disons, 2018. Pensées? Merci!



0
votes

Votre exercice commence en novembre. Cela rend l'agrégation un grand délicat, en particulier une version qui fonctionnera à la fois en octobre et novembre.

Cependant, l'exercice financier peut être calculé en ajoutant deux mois à la date et à l'extraction de l'année. Si nous prenons cette approche, une méthode est la suivante: xxx

ici est un dB <> violon.


2 commentaires

Ceci est en fait assez proche de ce que j'avais (en ce qui concerne YTD car je n'avais pas encore aventuré au fiscal YTD). Cela a peut-être pu être quelque chose que j'ai échoué à clarifier mais je ne suis pas garanti d'exécuter la requête dans le même délai que la facture_date. Il semble que l'utilisation de sysdate retournerait un total de YTD incorrect si je pouvais sélectionner une facturation_num survenue dans, disons, 2018. Pensées? Merci!


@Michaelcole. . . Je suis un peu confus. Si vous voulez cela à une autre date, utilisez simplement cette date au lieu de sysdate . Vos exemples de données suggèrent que vous souhaitez la dernière année / l'exercice financier. Vous avez une ligne avec une date d'octobre 2019 et il n'est pas inclus dans les résultats.