Oracle
 sql >> Base de données >  >> RDS >> Oracle

Puis-je faire pivoter des lignes de date dans des colonnes sans avoir à spécifier les dates dans le pivot ? SQL Oracle

Dans les pallets sous-requête, vous sélectionnez une représentation sous forme de chaîne de dates (les cinq ou six prochains jours). Au lieu de cela, vous devez sélectionner des nombres entiers, comme suit :

select .... , trunc(a.ord_to_ship_date) - trunc(sysdate) as days_ahead, ....

Et puis, dans la sélection externe,

pivot .... for days_ahead in (1 as today_plus_1, 2 as today_plus_2, 3 as ....)

Notez que dans les pallets vous avez trunc(a.ord_to_ship_date) between sysdate and sysdate + 5 . Cela signifie que si la requête est exécutée exactement à minuit, vous obtiendrez les dates d'expédition pour aujourd'hui, demain, ..., aujourd'hui + 5 (SIX jours au total). S'il est à n'importe quelle heure autre que minuit, vous n'obtiendrez que cinq jours - EXCLUSANT aujourd'hui. Vous ne savez pas quelle est votre exigence réelle, mais vous voudrez peut-être comparer avec TRUNC(sysdate) au lieu de sysdate , et voyez exactement ce dont vous avez besoin dans la requête.