2017-02-23 2 views
1
select maintance_action_date,add_months(maintenance_action_date,3) 
as Service_By 
from maintenance 
where bike_no = 1; 

Jusqu'à présent cette requête me montre toutes les fois que le vélo a subi une maintenance, puis ajoute 3 mois à elle. Cependant, je veux qu'il affiche la date la plus récente et y ajoute trois mois. Quelqu'un sait comment je ferais ça.Max et ajouter le mois pour SQL ne fonctionne pas

+0

Pouvez-vous ajouter des exemples de données? –

+0

Mon mauvais, accidentellement ajouté. fixé maintenant. –

Répondre

0

Vous pouvez utiliser la fonction max() pour obtenir la date récente

select max(maintance_action_date) ,add_months(max(maintenance_action_date),3) 
as Service_By 
from maintenance 
where bike_no = 1; 

ou essayez d'utiliser un intermédiaire sélectionnez

select my_date, add_months(t.my_date,3) 
from ( 
    select max(maintance_action_date) my_date 
    from maintenance 
    where bike_no = 1 
    ) t 
+0

retour avec cette "ORA-00937: pas un seul groupe fonction de groupe 00937. 00000 - "pas une fonction de groupe unique groupe" * Cause: * Action: Erreur à la ligne: 293 Colonne: 8" –

+0

@TommySmall réponse mise à jour ... l'espoir est utile – scaisEdge

+0

Ouais c'est génial merci :) –

0

Il suffit d'utiliser la fonction max():

select max(maintance_action_date), 
     add_months(max(maintenance_action_date), 3) as Service_By 
from maintenance 
where bike_no = 1; 
+0

Revenir avec cette "ORA-00937: pas une fonction de groupe à groupe unique 00937. 00000 -" pas une fonction de groupe à groupe unique "* Cause: * Action: Erreur à la ligne: 293 Colonne: 8" –

+0

@TommySmall. . . Cette requête ne doit pas générer cette erreur. Il n'y a pas de colonnes non agrégées dans 'select'. –