0
votes

Sélectionnez un seul groupe avec la date de connexion la plus récente

J'essaie de simplement obtenir 1 groupe qui a la date de connexion maximale. xxx pré>

mon code p> xxx pré>

résultat p> xxx pré>

sortie souhaitée p>

Flower


0 commentaires

4 Réponses :


0
votes

juste supprimer et t2.login_date <= sysdate condition xxx

sortie xxx

ou utilisez Row_Number () xxx

sortie xxx

Lien de démonstration pour la version


2 commentaires

@Bff dbfiddle.uk/... Vérifiez ce lien sa fonction de travail


@Bff Les deux versions ont fonctionné dbfiddle.uk/...



0
votes

S'il vous plaît essayez ceci. Et votre système Sysdate pourrait être de retour à la date actuelle.

 select distinct top 1 group from table t
    where t.user_ID = 'Mulan'
    and t.Login_Date = (select max (t2.Login_Date)
                          from table t2
                          where t.user_ID = t2.user_ID
                        )


2 commentaires

Top 1 ne fonctionnait pas pour moi, cela m'a donné une erreur - j'utilise Oracle


S'il vous plaît ajouter rownum = 1 dans la condition.



1
votes
with s (user_ID, grp, Login_Date) as (
select 'Mulan', 'Flower'   , to_date('4/4/2017'  , 'mm/dd/yyyy') from dual union all
select 'Mulan', 'Badminton', to_date('11/20/2015', 'mm/dd/yyyy') from dual union all
select 'Mulan', 'Flower'   , to_date('11/20/2015', 'mm/dd/yyyy') from dual)
select
max(grp) keep (dense_rank last order by login_date) as grp
from s
group by user_id;

GRP
---------
Flower

2 commentaires

Merci, à vous travaille! Mais une question rapide, je voulais seulement retourner "GRP". Est-il possible de simplement sélectionner Max (GRP) Garder (DENSY_RANK Dernière commande par login_date) en tant que GRP? Est-ce que ça va me donner la bonne fleur?


@Bff dbfiddle.uk/... Vérifiez ce lien



0
votes

Ceci devrait être une solution simple xxx


0 commentaires