Ich möchte einen bestimmten Wert aus dieser Tabelle finden; der letzte Wert für jeden ElEnd
, die ist, hat ItemNumber 2
:Finde den letzten Wert aus einer von 3 Zeilengruppen
ID | ID2 | Item1 | Item2 | Item3 | Element | ItemNum | ElStart | ElEnd
===================================================================
1 | 1 | rock | n | roll | r | 1 | 23.212 | 23.222
2 | 1 | rock | n | roll | o | 1 | 23.222 | 23.256
3 | 1 | rock | n | roll | c | 1 | 23.256 | 23.277
4 | 1 | rock | n | roll | k | 1 | 23.277 | 23.290
5 | 1 | rock | n | roll | n | 2 | 23.290 | 23.321
6 | 1 | rock | n | roll | r | 3 | 23.321 | 23.331
7 | 1 | rock | n | roll | o | 3 | 23.331 | 23.434
8 | 1 | rock | n | roll | l | 3 | 23.434 | 23.456
9 | 1 | rock | n | roll | l | 3 | 23.456 | 23.567
10 | 2 | a | tiny | rock | a | 1 | 23.567 | 23.678
11 | 2 | a | tiny | rock | t | 2 | 23.678 | 23.789
12 | 2 | a | tiny | rock | i | 2 | 23.789 | 23.890
13 | 2 | a | tiny | rock | n | 2 | 23.890 | 23.901
14 | 2 | a | tiny | rock | y | 2 | 23.901 | 24.123
15 | 2 | a | tiny | rock | r | 3 | 24.123 | 24.234
16 | 2 | a | tiny | rock | o | 3 | 24.234 | 24.345
17 | 2 | a | tiny | rock | c | 3 | 24.345 | 24.456
18 | 2 | a | tiny | rock | k | 3 | 24.456 | 24.567
So im Fall dieses Beispiels Tisch, ich will 23.321
und 24.123
auszuwählen. Ich möchte später diese Werte in UPDATE
verwenden, um sie in eine neue Spalte Item2ElementEnd
zu kopieren.
Ich habe eine Reihe von Abfragen versucht, die subselect oder UNION
verwenden, aber keine von ihnen war effizient - sie waren alle so langsam laufen, dass ich sie stoppen musste (meine Tabelle hat etwa 600.000 Einträge).
Dies ist eine Abfrage, die mir den falschen Wert (ELEND für ItemNum 3 statt 2) ergibt:
zu langsamselect ID2, Item2, max(ElEnd)
from t1
group by ID2;
Dies ist ein Beispiel Abfrage, die nicht arbeiten, weil es lief WAY (I musste abbrechen):
select Item2, ElStart, ElEnd
from t1
where ItemNum = "2"
and ElStart = (select max(ElStart) from t1 as f where f.Item2 = t1.Item2);
Wie kann ich das am effizientesten machen?
Also alle anderen Spalten auf dieses spezifische Problem irrelevant sind? – Strawberry
1) Pls definieren 'letzten Wert'. Ich vermute, aber eine Frage sollte keinen Raum zum Raten lassen. 2) Bitte beachten Sie, was Sie versucht haben. Atm Ihre Frage sieht eher aus wie eine "herauszufinden, was mein Problem ist und mir eine Kopie-Paste-Lösung" Art der Frage. – Shadow
Wie es in meiner Frage heißt, versuche ich das letzte Vorkommen für jedes 'ElEnd' zu finden, das' ItemNum' 2 hat, also wären im Fall dieser Beispieldaten die Werte, die zurückgegeben würden, '23.321' und '24.123'. – rayne