2017-06-09 3 views
0

J'ai un tableau comportant 26 colonnes dont les 3 premières colonnes sont le jour, le mois et l'année. Et le reste des colonnes ayant des informations que je dois montrer. Maintenant je dois aller chercher des disques selon le dernier jour du mois. J'ai essayé d'écrire du code.Sélectionnez les enregistrements en fonction du dernier jour du mois.

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day)) 

Mais cela ira chercher les enregistrements du dernier jour de chaque mois. Quand je n'ai pas le dernier jour dans les dossiers alors ce code ne fonctionnera pas. Donc, au lieu de LAST_DAY, je veux des fonctionnalités comme MAX date dans ce mois. Comment puis-je mettre en œuvre cette fonctionnalité.

Répondre

1

Vous souhaitez connaître la dernière date de chaque mois dans vos données. Pour cela:

select s.* 
from subscription_stats s 
where s.day = (select max(s2.day) 
       from subscription_stats s2 
       where s2.year = s.year and s2.month = s.month 
      ); 

Bien qu'il ne ferait pas cette requête beaucoup plus simple, vous devez être stocker les dates que dates dans votre table. C'est-à-dire, une date, pas trois colonnes séparées pour l'année/mois/jour.

+0

Merci Gordon Linoff d'avoir répondu droitwere très rapidement. Ça marche. – karan

+0

pouvez-vous me dire comment puis-je récupérer des données seulement le dernier jour des années? – karan

+0

@karan. . . La sous-requête ne ferait que comparer l'année et non le mois. –