J'ai ..
select max(Date),ID,Qty from table group by ID,Qty
J'ai besoin des données d'ID et de quantité au maximum (date) de chaque ID comme ci-dessous
Date ID Qty 2019/6/1 A 22 2019/7/1 B 33
J'utilise ..
Date ID Qty 2019/5/1 A 11 2019/6/1 A 22 2019/7/1 B 33 2019/6/1 B 44
mais le résultat n'est pas ce que j'attends
4 Réponses :
group by
n'est probablement pas le bon outil pour le travail. À la place, vous pouvez utiliser rank
pour trouver la première ligne par groupe et filtrer en fonction de celle-ci:
SELECT date, id, qty FROM (SELECT date, id, qty, RANK() OVER (PARTITION BY id ORDER BY date DESC) AS rk FROM mytable) t WHERE rk = 1
Merci beaucoup. c'est du travail mais je ne comprends pas le code
ceci est expliqué dans un blog ici: coding.feron.it/2012/08/…
Vous pouvez utiliser la solution suivante:
SELECT t.* FROM table_name t INNER JOIN ( SELECT MAX(Date) AS Date, ID FROM table_name GROUP BY ID ) tMAX ON t.ID = tMAX.ID AND t.Date = tMAX.Date
Essayez ceci
SELECT Date, ID, Qty FROM ( SELECT Date, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY Date DESC) AS Grp, ID, Qty FROM <Table> )Dt WHERE Dt.Grp = 1
vous pouvez utiliser la sous-requête corrélée
select t1.* from table_name t1 where date=( select max(date) from table_name t2 where t2.id=t1.id)