![]() |
Datenbank: SQL-Server • Version: 2000 • Zugriff über: ADO
select statement
Hallo,
komme da mit einem select statement nicht klar. Hab eine Tabelle mit Spalten Charge,Typ,Probe,Zeit. Es gibt mehrere unterschiedliche Proben zu jeder Charge. Was ist benötige, sind die jeweils letzten Einträge zu jeder Probe (fett markiert). Charge Typ Probe Zeit 4712 M A 01:00 4712 M K 02:00 4712 M O 03:00 4712 M K 04:00 4712 M A 02:30 Ich müsste also 2 selects nacheinander auf die gleiche Tabelle absetzen. Etwa 1. select distinct(Probe) where Type = 'M' => um alle exisitierenden Proben zu ermitteln, also A,K,O 2. select LAST 1 from >= ERGEBNIS von 1. <= => um die jeweils letzten Sätze je Probe, also 03:00,04:00,02:30 zu ermitteln. Bekomme jedoch die Abfrage nicht hin. Ich bräuchte äquivalent zu top 1. Jemand ne Idee? |
Re: select statement
|
Re: select statement
Hm du könntest auch in die andere richtung ordnen (absteigend?) und dann TOP machen...
|
Re: select statement
mein statemant sieht so aus:
select top 1 * from TABELLE where (PROBE = (select distinct(PROBE) from tabelle where TYP = 'M' and CHARGE = 4712)) Bekomme dabei folgende Fehlermeldung zurück: Die Unterabfrage gab mehr als einen Wert zurück. Das ist ungültig, wenn die Unterabfrage auf =, !=, <, <= , >, >= folgt oder als Ausdruck verwendet wird. Wie mache ich der ersten Abfrage klar, das Unterabfrage mehrere Datensätze zurückgibt??? Mit der Umkehrung der Sortierung muss ich noch sehen. |
Re: select statement
SQL-Code:
select
top 1 * from TABELLE where PROBE in (select distinct(PROBE) from tabelle where TYP = 'M' and CHARGE = 4712); |
Re: select statement
Hallo,
liefert Dir das da
SQL-Code:
das gewünscht Ergebnis?
select Charge, Typ, Probe, Max(Zeit) As Zeit
from tabelle where TYP = 'M' and CHARGE = 4712) group by Charge, Typ, Probe; |
Re: select statement
Danke für die schnelle Hilfe!
mkinzler: ich bekomme leider wieder alle Datensätze zurück, nicht nur die jeweils letzten einer Probe. nahpets: das passt, ich bekomme von allen 'Probenarten' den jeweils letzen Eintrag. Danke |
Re: select statement
nahpets:
noch eine Frage (Problem mit Aggregatfkt+Group) zu Deinem script von vorhin: select Charge, Typ, Probe, Max(Zeit) As Zeit from tabelle where TYP = 'M' and CHARGE = 4712) group by Charge, Typ, Probe Ich brauche noch die jeweilige "ZeilenNummer" (eigenes Feld mit vorlaufender Nummer). Wenn ich dieses jetzt im select statement einbaue, also => select Zeilennummer,Charge, Typ, Probe, Max(Zeit) As Zeit dann bekomme ich den Fehler: "Die Zeilennummer-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist." Die Zeilennummer-Spalte in die Group Anweisung einfügen, ist aber Unsinn, weil sie dazu führt, das wieder alle und nicht nur die jeweils letzten Einträge angezeigt werden. Gibt es keine Möglichkeit ein Feld anzuzeigen, auch wenn es in keiner Group Anweisung auftaucht? |
Re: select statement
Wie soll dass den gehen, da du mehrere Zeilen zu einer zusammenfasst kannst du keine Feld nehmen , welches kein Aggegat ist oder in der Gruppierungs-Bedingung steht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz