J'ai des valeurs dans une table de faits comme suit:Peupler la date mensuelle de la date trimestrielle dans Oracle
As of Date F_Type Value
31-Mar-17 ABC Corp 1.0
30-Jun-17 ABC Corp 1.1
Au dates sont les dates de fin trimestre, maintenant je dois écrire une requête pour obtenir le résultat défini comme ci-dessous : (dates de fin de mois entre les dates après la valeur est modifiée)
As of Date F_Type Value
31-Mar-17 ABC Corp 1.0
30-Apr-17 ABC Corp 1.0
31-May-17 ABC Corp 1.0
30-Jun-17 ABC Corp 1.1
Comment puis-je remplir le 30-Apr-17 et 31-mai-17 lignes ??
code a essayé jusqu'à présent:
SELECT
As_Of_Date,
F_Type,
Value,X.*
FROM FACT F INNER JOIN
(SELECT M_DATE,trunc(M_DATE+1,'Q')-1 AS QTR_DATE FROm
(Select TO_DATE('31-JAN-2017','DD-MON-YYYY') AS M_DATE from dual UNION ALL
Select TO_DATE('28-FEB-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-MAR-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('30-APR-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-MAY-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('30-JUN-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-JUL-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-AUG-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('30-SEP-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-OCT-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('30-NOV-2017','DD-MON-YYYY') from dual UNION ALL
Select TO_DATE('31-DEC-2017','DD-MON-YYYY') from dual))X
ON F.As_Of_Date=X.QTR_DATE
Cela me donne quelque chose comme ci-dessous:
As of Date F_Type Value M_Date Qtr_Date
3/31/2017 ABC Corp 1.0 3/31/2017 3/31/2017
3/31/2017 ABC Corp 1.0 4/30/2017 3/31/2017
3/31/2017 ABC Corp 1.0 5/31/2017 3/31/2017
6/30/2017 ABC Corp 1.1 6/30/2017 6/30/2017
6/30/2017 ABC Corp 1.1 7/31/2017 6/30/2017
6/30/2017 ABC Corp 1.1 8/31/2017 6/30/2017
est-il un moyen de régler cette requête et de sortie ainsi.
Vous devriez probablement utiliser 'last_day()' pour vous assurer que les dates générées se terminent le mois, car 30rh n'est pas le dernier jour de juillet. – APC
Je n'ai pas collé l'ensemble de données de résultats de ma base de données, peut-être que je l'ai édité à la main, je vais corriger la réponse. Merci @APC de m'avoir informé. La question a supposé que les données seront de la fin du mois, donc j'ai utilisé add_months ce qui rend la date suivante aussi la fin du mois. – kratostoical
Merci @kratostoical –