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)