Fragensteller
Join mit Unterabfrage bringt keinen Wert

Frage
-
Hallo,
ich speichere in der Tabelle 'Tln_Status', die Stati zu einer VNr zu verschiedenen Zeiten. Nun brauche ich in einer Abfrage den Status und weitere Angaben zu einem Stichtag sowie zugehörige Werte aus anderen Tabellen. Meine Abfrage sieht so aus:
Declare @Ende Datetime
Set @Ende='31.8.2013'
Select id_tlnmz,datum,AktDat From Tln_masz
Join (Select Top 1 status,datum,AktDat,VNr From Tln_Status Where datum <= @Ende Order By AktDat DESC) t1 On VNr=id_tlnmz
Where t1.status<>10 AND Maszn=7911
Das Problem: Die Abfrage liefert nur die Zeilen, wo zu einer VNr mehr als 1 Wert vorhanden ist. In den Zeilen, wo zu VNr nur ein Wert vorhanden ist erscheinen nicht in der Abfrage.
Mittelung vom Forum
Alle Antworten
-
Hallo,
ohne Testdaten lässt sich nur raten:
Du verwendest in der WHERE Klausel t1.status<>10, was jedoch nicht in der Unterabfrage auftaucht, und so kann dabei "nichts" herauskommen. Ändere doch mal auf:
(Select Top 1 status,datum,AktDat,VNr From Tln_Status Where status <> 10 AND datum <= @Ende Order By AktDat DESC)
Gruß Elmar
-
-
Hallo Elmar,
ich habe nun noch etwas experimentiert. Das Problem scheint zu sein, dass in dem Join nicht, wie gewünscht, das Top 1 für jedes VNr=id_tlnmz gebildet wird.
(Select Top 1 status,datum,AktDat,VNr From Tln_Status Where datum <= @Ende Order By AktDat DESC) t1 On VNr=id_tlnmz
Ich habe das mit Testdaten probiert und erhalte anscheinend das Ergebnis über alle VNr. Wenn ich in das Select VNr=id_tlnmz mit hinzunehme kennt er das id_tlnmz nicht.
Uwe
Mittelung vom Forum