Tweakers,
Ik heb een SQL query en die moet het volgende uit gaan voeren. Ik werk bij een laboratorium en wij voeren testen uit op monsters. Elke test heeft een datum dat het resultaat is ingevoerd. Nu wil ik per monster de test weten waarvan het resultaat als laatste is ingevoerd. Uiteindelijk wil ik dat dan weer gaan aggregeren.
De volgende resultaten krijg ik nu:
Dit hierboven is even een voorbeeld van 1 monster (uiteindelijk zijn dat er honderden). Het resultaat van hierboven zou moeten worden:
omdat dat de hoogste datum is.
Als ik een GROUP BY uitvoer op monster dan blijven óf alle testen staan, of ik zie ze niet meer. Maar ik wil juist van elk monster weten welke test nou de hoogste datum heeft. Aan een HAVING clausule heb ik volgens mij niets, maar is dit op een andere manier op te lossen??
De enige oplossing die anders overblijft is met subqueries weer met datums vergelijken, maar daar wordt de performance zoals jullie begrijpen niet echt beter van.
Alvast bedankt!
.
Ik heb een SQL query en die moet het volgende uit gaan voeren. Ik werk bij een laboratorium en wij voeren testen uit op monsters. Elke test heeft een datum dat het resultaat is ingevoerd. Nu wil ik per monster de test weten waarvan het resultaat als laatste is ingevoerd. Uiteindelijk wil ik dat dan weer gaan aggregeren.
De volgende resultaten krijg ik nu:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| monster testcode datum 226496 as5i 02-09-08 226496 cd5i 02-09-08 226496 cr5i 02-09-08 226496 cu5i 02-09-08 226496 hg5s 05-09-08 226496 ir5m 27-08-08 226496 me5m 28-08-08 226496 me5o 28-08-08 226496 ni5i 02-09-08 226496 pb5i 02-09-08 226496 zn5i 02-09-08 226496 eox5e 09-09-08 226496 eox5o 04-09-08 226496 pak5o 04-09-08 226496 pem5m 28-08-08 226496 btex5u 03-09-08 226496 grir5m 28-08-08 226496 minol5g 10-09-08 226496 minol5o 04-09-08 226496 pakvrom5h 08-09-08 |
Dit hierboven is even een voorbeeld van 1 monster (uiteindelijk zijn dat er honderden). Het resultaat van hierboven zou moeten worden:
code:
1
| 226496 minol5g 10-09-08 |
omdat dat de hoogste datum is.
Als ik een GROUP BY uitvoer op monster dan blijven óf alle testen staan, of ik zie ze niet meer. Maar ik wil juist van elk monster weten welke test nou de hoogste datum heeft. Aan een HAVING clausule heb ik volgens mij niets, maar is dit op een andere manier op te lossen??
De enige oplossing die anders overblijft is met subqueries weer met datums vergelijken, maar daar wordt de performance zoals jullie begrijpen niet echt beter van.
Alvast bedankt!