0
votes

Convertir chaque plage de date en ligne de chaque journée oracle

J'ai une table qui ressemble à ce xxx

Comment puis-je le faire être retourné comme ceci ... xxx

i Pris cette méthode mais non réussi xxx

me donner une erreur à la ligne de commande: 3 colonne: 25

Aidez-moi s'il vous plaît je suis débutant < / p>


1 commentaires

Quelle erreur vous a-t-elle donné? (Vous avez formulaire au lieu de à partir de mais pas sûr si vous avez réypéré cela pour la publication ...)


3 Réponses :


1
votes

La seule erreur évidente de votre code posté est que vous avez formulaire double code> au lieu de à partir dual code>. Mais avec cela corrigé, il ne donne pas la sortie que vous voulez, tout comme vous ne recevez que les dates et uniquement pour un employé: xxx pré>

Vous pouvez supprimer le filtre et ajouter le EMP_ser CODE> VALEUR TO: P>

with rcte (rn, diff, from_date, emp_ser) as (
  select 1, trunc(to_date - from_date), from_date, emp_ser from emp_vac
  union all
  select rn + 1, diff, from_date, emp_ser from rcte where rn <= diff )
select from_date + rn - 1 vac_date, emp_ser
from rcte
order by emp_ser, vac_date;


5 commentaires

Pour une raison quelconque (dates bug), la version RCTE ne fonctionne pas dans Oracle 11. Après une petite modification, où nous opérons des chiffres au lieu des dates, cela fonctionne. Voici le dbfiddle . Bonne réponse quand même.


Intéressant, je l'ai testé sur 11.2.0.4 et c'était bien. DB <> FIDDLE est 11.2.0.2 Donc, je suppose que c'est le bogue 11840579 qui est affiché comme résolu en 11.2.0.3. (J'ai vu cela avant mais l'avait oublié à ce sujet ...) De toute façon, merci pour la solution de contournement.


donnez-moi Erreur d'erreur à la ligne de commande: 1 Colonne: 10 Rapport d'erreur: erreur SQL: ORA-32033: تبديل العمود غير مدعوم 32033. 00000 - "aliasing colonne non pris en charge" * Cause: colonne aliasing avec clause n'a pas encore pris en charge * Action: Spécifiez l'aliasing dans la sous-requête de défense et réessayez


Dans la première méthode, cela fonctionne mais que toutes les données puis-je filtrer sur une personne pour le tester? comment


@islaAmbahy - Vous devez être sur une version plus tôt que 11.2, ce qui signifie que vous ne pourrez pas utiliser de CTES récursif telles qu'elles ont été ajoutées dans cette version. Vous devrez utiliser la méthode hiérarchique (version adaptée de la vôtre ou le deuxième bloc de code avec l'appel à dbms_random ). Si vous souhaitez tester une seule personne, mettez votre EMP_SER Filtrer dans.



0
votes

Essayez ceci xxx


0 commentaires

0
votes
SELECT DISTINCT
 em_code, (to_date(end_date,'DD-MM-YYYY') - level + 1) AS days
FROM
   islaam_vca where em_code = '2222'

CONNECT BY level <= (to_date(end_date,'DD-MM-YYYY') - to_date(start_date,'DD-MM-YYYY') + 1)
order by days ASC
;
it's work i test this code and working with me

0 commentaires