J'ai les données suivantes, sur lesquelles je veux imprimer quelques lignes en fonction d'une autre condition sur d'autres colonnes:
La condition est que, si (role = xx ou role = yy) et status = Approved, alors nous devons récupérer le maximum (Start_Date) des deux lignes.
Comment y parvenir?
3 Réponses :
Est-ce ce que vous recherchez?
select * from ( select t.*, case when role in ('xx', 'yy') and status = 'Approved' then row_number() over(partition by id order by start_date desc) else 1 end rn from mytable t ) t where rn = 1
L'idée est de classer les enregistrements qui satisfont à un ensemble de conditions particulières, et d'attribuer un classement par défaut à tous les autres enregistrements. Ensuite, ce classement personnalisé peut être utilisé pour le filtrage.
Vous pouvez faire quelque chose comme ceci.
select case when (role='xx' or role='yy') and status ='approved' then max([date]) else [date] end as 'your column name' from [yourtable] group by role,status ,[date]
La condition est que, si (role = xx ou role = yy) et status = Approved, alors nous devons récupérer le maximum (Start_Date) des deux lignes.
Je suppose que cela fait référence à par
id
et que vous voulez filtrer les autres lignes. Une méthode relativement simple est:select t.* from (select t.*, row_number() over (partition by id order by start_date desc) as seqnum from t where t.role in ('xx', 'yy') and t.status = 'Approved' ) t where seqnum = 1;Vous pouvez également exprimer cela en utilisant
row_number()
:select t.* from t where t.role in ('xx', 'yy') and t.status = 'Approved' and t.start_date = (select max(t2.start_date) from t t2 where t2.id = t.id and t2.role in ('xx', 'yy') and t2.status = 'Approved' );Les deux peuvent être facilement modifiés pour choisir les autres lignes, mais ce n'est pas ainsi que j'interprète la question.
Merci de ne pas publier d'images, mais de modifier votre question pour publier les données sous forme de texte formaté + votre tentative + les résultats attendus
Les exemples de données sont mieux servis sous forme de DDL + DML . Veuillez modifier votre question pour l'inclure, votre tentative actuelle et les résultats souhaités.
Quelle est votre sortie d'échantillon attendue?
Et qu'en est-il du reste des rangées?