AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Select Statement, letzten Datensatz markieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Select Statement, letzten Datensatz markieren

Ein Thema von Piro · begonnen am 28. Apr 2012 · letzter Beitrag vom 30. Apr 2012
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 17:20
Datenbank: SQL 2005 • Version: Express • Zugriff über: ADO
Moin zusammen,

ich habe folgende Struktur für meine Log-Tabelle. Die Tabelle dient als Protokoll für einen InsertProzess für Daten.

Code:
ProjektName,Startdatum,Enddatum,Anzahl
Hier sind die Beispieldaten.
Code:
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
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.

Das Ergebnis sollte dann so aussehen, welches ein VIEW werden würde.
Code:
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
Ich mir kann einer von Euch weiterhelfen, da meine SQL Kenntnisse sehr beschränkt sind.

Vielen Dank im Voraus.
Sven
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 17:25
Reicht auch eine Sortierung?

SQL-Code:
select
    ProjektName,Startdatum,Enddatum,Anzahl
from
    <Tabelle>
order by
    ProjektName,Startdatum;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 17:29
Hatte ich auch schon überlegt aber ich brauche diese Kennzeichnung, da Sie in einem anderen System verwendet werden soll.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 18:04
Ich habe gerade keinen Rechner mit Testmöglichkeiten zur Hand

1. Sicht

Code:
Create View V_Blub as
Select ProjektName,Max(Enddatum) as EndDatum from A,'X' as Kennzeichen
Group by ProjektName
2.
Code:
Select A.*,V_Blub.Kennzeichen from A
Left Join V_Blub on V_Blub.ProjektName=A.ProjektName and V_Blub.EndDatum =A.EndDatum
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 18:15
Hallo...

Zitat:
Projekt1,22.04.2012 06:30:00,22.04.2012 07:30:00,100,X
...gibt es für das X eine Tabellenspalte ?
Zitat:
da Sie in einem anderen System verwendet werden soll
Soll das "select" (View) auf dem anderen System ausgeführt werden ? In welcher Form werden die Daten sonst übergeben ?
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#6

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 28. Apr 2012, 18:22
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.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 29. Apr 2012, 07:59
SQL-Code:
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
oder
SQL-Code:
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
Achtung! Mehrere Einträge mit gleichem (letzten) Enddatum bekommen alle ein 'X'!
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:
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
Somit hat jedes Projekt garantiert genau einen letzten Datensatz.
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#8

AW: SQL Select Statement, letzten Datensatz markieren

  Alt 30. Apr 2012, 14:16
@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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz