Problem mit Erstellung einer View
Hallo @all,
ich finde für folgendes Problem keine Lösung:
Gegeben ist eine Tabelle mit zwei Spalten ([ObjektID] als Integer, [TermineEVT] als Datetime).
Gesucht werden die letzten zwei [TermineEVT] zu einer [ObjektID] als Spalten (für die Berechnung von Differenzen).
Also rauskommen sollte Etwas in der Form:
[ObjektID] [LetztesDatum] [VorletztesDatum]
folgendes Statement würde das liefern:
Ergebnis:
Leider könnte ich das nur ObjektID für ObjektID erledigen (ginge evtl. über eine UDF).
Ich benötige aber eine View mit allen Objekten.
Mit
bekomme ich nur:
Ich benötige jedoch nur die gelb markierten Zeilen. Also den Datensatz zu jeder ID mit der MAX(LetztesDatum)
Ich kriege es ums verr... nicht gebacken.
Hat jemand von Euch eine Idee ? (Und ja, ich habe Tante google befragt, aber die Frage war wohl falsch gestellt.)
Zielsystem wäre MS-SQL2014.
Vielen Dank im Voraus
Frank
ich finde für folgendes Problem keine Lösung:
Gegeben ist eine Tabelle mit zwei Spalten ([ObjektID] als Integer, [TermineEVT] als Datetime).
Gesucht werden die letzten zwei [TermineEVT] zu einer [ObjektID] als Spalten (für die Berechnung von Differenzen).
Also rauskommen sollte Etwas in der Form:
[ObjektID] [LetztesDatum] [VorletztesDatum]
folgendes Statement würde das liefern:
SELECT TOP 1 ObjektID, MAX(EVT) AS LetztesDatum,
(SELECT MAX(EVT) AS MaxVonEVT
FROM dbo.TermineEVT AS i
WHERE (ObjektID = o.ObjektID) AND (EVT < o.EVT)) AS VorletztesDatum
FROM dbo.TermineEVT AS o
WHERE objektid = 2121
GROUP BY ObjektID, EVT
ORDER BY LetztesDatum DESC

Ich benötige aber eine View mit allen Objekten.
Mit
SELECT ObjektID, MAX(EVT) AS LetztesDatum,
(SELECT MAX(EVT) AS MaxVonEVT
FROM dbo.TermineEVT AS i
WHERE (ObjektID = o.ObjektID) AND (EVT < o.EVT)) AS VorletztesDatum
FROM dbo.TermineEVT AS o
GROUP BY ObjektID, EVT
ORDER BY objektID, LetztesDatum DESC

Ich kriege es ums verr... nicht gebacken.
Hat jemand von Euch eine Idee ? (Und ja, ich habe Tante google befragt, aber die Frage war wohl falsch gestellt.)
Zielsystem wäre MS-SQL2014.
Vielen Dank im Voraus
Frank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 386510
Url: https://administrator.de/forum/problem-mit-erstellung-einer-view-386510.html
Ausgedruckt am: 16.06.2025 um 04:06 Uhr
8 Kommentare
Neuester Kommentar
Möglicherweise so?
Edit: Doch, das sollte funktionieren.
SELECT ObjektID, [EVT] AS LetztesDatum,
(SELECT MAX([EVT]) AS MaxVonEVT
FROM [TermineEVT] AS T3
WHERE (T3.ObjektID = T1.ObjektID) AND (T3.[EVT] < T1.[EVT])) AS VorletztesDatum
FROM [TermineEVT] AS T1
WHERE [EVT] IN (SELECT TOP 1 Max(EVT) FROM [TermineEVT] AS T2 WHERE T2.ObjektID = T1.ObjektID)
Edit: Doch, das sollte funktionieren.
Hallo Frank,
bischen spät, ich weiß, aber probier es mal hiermit:
Gruß, Mad Max
bischen spät, ich weiß, aber probier es mal hiermit:
select ObjektID,
LetztesDatum,
(select top (1) EVT from TermineEVT where ObjektID = o.ObjektID and EVT < o.LetztesDatum order by EVT desc) as VorletztesDatum
from (select ObjektID,
max (EVT) as LetztesDatum
from TermineEVT
group by ObjektID) o
Gruß, Mad Max