![]() |
Datenbank: SQL 2005 • Version: Express • Zugriff über: ADO
SQL Select Statement, letzten Datensatz markieren
Moin zusammen,
ich habe folgende Struktur für meine Log-Tabelle. Die Tabelle dient als Protokoll für einen InsertProzess für Daten.
Code:
Hier sind die Beispieldaten.
ProjektName,Startdatum,Enddatum,Anzahl
Code:
Jetzt möchte ich gerne immer dem letzten Datensatz in Bezug auf den ProjektNamen und das Startdatum ein Kennzeichen geben. So dass man später mal nach diesem Kennzeichen filtern kann für Auswertungen.
Projekt1,20.04.2012 12:00:00,20.04.2012 12:30:00,10
Projekt1,22.04.2012 06:30:00,22.04.2012 07:30:00,100 Projekt2,24.04.2012 06:30:00,24.04.2012 07:30:00,100 Projekt2,24.04.2012 08:30:00,24.04.2012 09:30:00,120 Projekt3,25.04.2012 06:30:00,25.04.2012 07:30:00,100 Das Ergebnis sollte dann so aussehen, welches ein VIEW werden würde.
Code:
Ich mir kann einer von Euch weiterhelfen, da meine SQL Kenntnisse sehr beschränkt sind.
Projekt1,20.04.2012 12:00:00,20.04.2012 12:30:00,10,
Projekt1,22.04.2012 06:30:00,22.04.2012 07:30:00,100,X Projekt2,24.04.2012 06:30:00,24.04.2012 07:30:00,100, Projekt2,24.04.2012 08:30:00,24.04.2012 09:30:00,120,X Projekt3,25.04.2012 06:30:00,25.04.2012 07:30:00,100,X Vielen Dank im Voraus. Sven |
AW: SQL Select Statement, letzten Datensatz markieren
Reicht auch eine Sortierung?
SQL-Code:
select
ProjektName,Startdatum,Enddatum,Anzahl from <Tabelle> order by ProjektName,Startdatum; |
AW: SQL Select Statement, letzten Datensatz markieren
Hatte ich auch schon überlegt aber ich brauche diese Kennzeichnung, da Sie in einem anderen System verwendet werden soll.
|
AW: SQL Select Statement, letzten Datensatz markieren
Ich habe gerade keinen Rechner mit Testmöglichkeiten zur Hand
1. Sicht
Code:
2.
Create View V_Blub as
Select ProjektName,Max(Enddatum) as EndDatum from A,'X' as Kennzeichen Group by ProjektName
Code:
Select A.*,V_Blub.Kennzeichen from A
Left Join V_Blub on V_Blub.ProjektName=A.ProjektName and V_Blub.EndDatum =A.EndDatum |
AW: SQL Select Statement, letzten Datensatz markieren
Hallo...
Zitat:
Zitat:
|
AW: SQL Select Statement, letzten Datensatz markieren
Da habe ich euch wohl etwas verwirrt.
Das andere System ist IBM Cognos welches seine Daten aus einem View holt, den ich auf der Datenbank selbst erstellt habe. Also ich brauche nur ein Select Statement, dass die Kennzeichnung eines jeden letzten Datensatzen macht in Bezug auf ProjektNamr und das letzte Startdatum. Danke. |
AW: SQL Select Statement, letzten Datensatz markieren
SQL-Code:
oder
Select *,
case when (select max(StartDatum) from Tabelle x where x.ProjektName = y.ProjektName) = y.StartDatum then 'X' else' ' end as IsLast from Tabelle y
SQL-Code:
Achtung! Mehrere Einträge mit gleichem (letzten) Enddatum bekommen alle ein 'X'!
Select *,
case when exists (select * from Tabelle x where x.ProjektName = y.ProjektName and x.StartDatum > y.StartDatum) then ' ' else 'X' end as IsLast from Tabelle y Das dürfte hier nicht der Fall sein. Allerdings vermisse ich eh eine Identitätspalte. Definiere einen AutoInc als PK und führe die Selektion (Icks oder nicht icks) lieber über den PK durch. Dann ist das allgemeingültig.
SQL-Code:
Somit hat jedes Projekt garantiert genau einen letzten Datensatz.
Select *,
case when exists (select * from Tabelle x where x.ProjektName = y.ProjektName and x.ID > y.ID) then ' ' else 'X' end as IsLast from Tabelle y |
AW: SQL Select Statement, letzten Datensatz markieren
@Furtbichler: Danke dir. Genau das war die Lösung.
An allen anderen auch ein Danke. Es ist immer wieder erstaunlich wie gut die Mitglieder des Forums sind. In anderen Foren warten man ewig auf eine Antwort. Schönen 1.Mai euch morgen. Danke nochmal an alle. Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 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