J'ai un schéma avec la table client et la table de commande. Un client peut passer commande à plusieurs dates. J'ai besoin d'avoir le order_date précédent pour chaque order_date correspondant à un client.Demande de tirer la date de la commande précédente correspondant à un client?
Dites un client placé 4 commandes, puis pour la commande la plus récente (4ème commande) - il doit tirer le order_date courant et le order_date précédent (3ème ordre). Pour la 3ème commande passée par le client, elle doit tirer 3rd order_date comme date de commande actuelle et date de commande précédente (2ème commande) comme ainsi de suite.
J'utilise ci-dessous requête pour obtenir order_date précédente, puis se joindre à current_query pour obtenir le résultat ::
select customerid, orderid, order_date as previous_order_date
from (
select c.customerid, o.orderid, o.order_date,
row_number() over (partition by c.customerid, o.orderid
order by o.order_date) rown
from customers c join orders o on c.customerid = o.customerid
) a
where rown = 2
Mais la question est, je reçois une date unique correspondant à un customerid alors que l'exigence est - juste order_date précédent correspondant à la date de commande actuelle pour un client.
Toute suggestion aiderait! Merci
Bonne trouvaille! Explication: http://docs.oracle.com/database/121/DWHSG/analysis.htm#CHDCBCGF "Étant donné que les fonctions permettent d'accéder à plusieurs lignes d'une table en même temps sans une auto-jonction, elles La fonction LAG permet d'accéder à une ligne à un décalage donné avant la position actuelle, et la fonction LEAD donne accès à une ligne à un décalage donné après la position actuelle. " –