Entschuldigung für den schlechten Titel. Ich war mir nicht sicher, wie ich mein Problem beschreiben sollte. Ich habe eine Abfrage geschrieben, die ungefähr 23.000 Datensätze zurückgibt. Viele dieser Datensätze haben ähnliche Informationen und ich möchte nur die Datensätze mit dem Maximum des Feldes dbo.tblMsgsOnAir_Type8.fldBuddyLinkSigStrength
auswählen. Ich habe versucht, nach allen anderen ausgewählten Spalten zu gruppieren, aber es scheint nicht richtig zu funktionieren. Ich verstehe SQL nicht ganz, vor allem die Max- und Group-Funktionen. Ich kann einfache Max-Funktionen ausführen, wenn ich nur eine Sache auswählen möchte oder muss. Ich verstehe nicht, wie es funktioniert, wenn ich eine Menge anderer Daten auswählen möchte. Unten ist die Abfrage.Auswählen von Max mit vielen anderen Elementen
SELECT
dbo.tblmeterinfo.fldMeterSerialNumber AS "MOP_FNP_Meter",
dbo.tblMsgsOnAir_Type8.fldRBuddyId AS "MOP_FNP_FNID",
dbo.TBLMETERMAINT.fldmeterid AS "Meter_ID_Helped",
dbo.tblMsgsOnAir_Type8.fldCBuddyId AS "FNID_Helped",
dbo.fn_dt(dbo.tblMsgsOnAir_Type8.fldRBuddyToi) AS "TOI",
dbo.tblMsgsOnAir_Type8.fldBuddyLinkSigStrength AS "Sig_Str",
dbo.TBLSAWN_CIS_INFO.SML AS "Buddy_SML",
dbo.TBLMETERLIST.fldaddress AS "Buddy_Address",
dbo.TBLSAWNGISCOORD.X_COORD AS "X_Coord",
dbo.TBLSAWNGISCOORD.Y_COORD AS "Y_Coord"
FROM dbo.tblMsgsOnAir_Type8
LEFT OUTER JOIN dbo.TBLMETERLIST
ON (dbo.TBLMETERLIST.FLDREPID = dbo.tblMsgsOnAir_Type8.fldCBuddyId)
LEFT OUTER JOIN dbo.TBLMETERMAINT
ON (dbo.TBLMETERMAINT.FLDREPID = dbo.tblMsgsOnAir_Type8.fldCBuddyID)
LEFT OUTER JOIN dbo.TBLSAWN_CIS_INFO
ON (dbo.TBLSAWN_CIS_INFO.FLDREPID = dbo.tblMsgsOnAir_Type8.fldCBuddyId)
LEFT OUTER JOIN dbo.TBLSAWNGISCOORD
ON (dbo.TBLSAWNGISCOORD.SRV_MAP_LOC = dbo.TBLSAWN_CIS_INFO.SML)
LEFT OUTER JOIN dbo.tblmeterinfo
ON (dbo.tblmeterinfo.fldRepId = dbo.tblMsgsOnAir_Type8.fldRBuddyId)
WHERE dbo.tblMsgsOnAir_Type8.fldRBuddyId IN (SELECT
dbo.tblSAWN_FNPmap.Repid
FROM dbo.tblSAWN_FNPmap)
AND dbo.TBLMETERMAINT.fldmeterid IS NOT NULL
Die Abfrage unten ist einfach und macht was ich will, aber nicht alle anderen Feld bekommen. Diese Abfrage gibt nur 617 Datensätze zurück. Ich möchte, dass die obige Abfrage 617 Datensätze zurückgibt, aber alle anderen Informationen einschließen, die ich ausgewählt habe.
SELECT
dbo.TBLMETERMAINT.fldmeterid AS "Meter_ID_Helped",
MAX(dbo.tblMsgsOnAir_Type8.fldBuddyLinkSigStrength) AS "Max_Sig"
FROM dbo.tblMsgsOnAir_Type8
LEFT OUTER JOIN dbo.TBLMETERMAINT
ON (dbo.TBLMETERMAINT.FLDREPID = dbo.tblMsgsOnAir_Type8.fldCBuddyID)
WHERE dbo.tblMsgsOnAir_Type8.fldRBuddyId IN (SELECT
dbo.tblSAWN_FNPmap.Repid
FROM dbo.tblSAWN_FNPmap)
AND dbo.TBLMETERMAINT.fldmeterid IS NOT NULL
GROUP BY dbo.TBLMETERMAINT.fldmeterid
Danke für die Vorschläge. Ich werde versuchen, die Abfrage Montag zu ändern und zurück zu melden. Ich denke, das macht Sinn. – AdamH