J'ai le code SQL suivant, et j'ai besoin de diviser une ligne en deux lignes si 'COV_PRD_STRT_DT' et 'COV_PRD_END_DT' sont des mois différents.Comment écrire une instruction split dans SQL, qui divise un enregistrement en 2 enregistrements si les mois sont différents pour les dates de début et de fin?
WITH CTE AS
(SELECT COV_PRD_STRT_DT,TO_DATE,COV_PRD_END_DT as MO_END_DT,
case when dateadd (DAY,-DAY(DATEADD(MONTH,1, BF.COV_PRD_STRT_DT)),
DATEADD(MONTH,1, d.from_date))
< To_date THEN DATEADD(DAY,-DAY(DATEADD(MONTH,1, BF.COV_PRD_END_DT)),
DATEADD(MONTH,1, BF.COV_PRD_END_DT))
ELSE To_Date END as MO_END_DT
FROM BILLING_FACT
UNION ALL
SELECT COV_PRD_STRT_DT,To_date,DATEADD(DAY,1,BF.COV_PRD_END_DT) as MO_END_DT, < TO_DATE
THEN DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1,BF.COV_PRD_END_DT)))
ELSE To_Date END as MO_END_DT
FROM CTE WHERE COV_PRD_END_DT < To_Date
)
select * from CTE order by COV_PRD_STRT_DT,COV_PRD_END_DT
grâce
pouvez-vous montrer quelques exemples de données et le résultat attendu? –
@FerdinandGaspar - Salut, malheureusement, je ne peux pas fournir des données de l'échantillon car il est PHI – user8611702
peut être un échantillon composé mais de mêmes types de données –