Ich habe eine Datentabelle zu Terminen und wenn die zugehörigen Daten aktualisiert werden, kann jeder Termin mehrere Datenzeilen haben. Ich möchte den letzten Datensatz jedes Termins auswählen, um den neuesten Schnappschuss jedes Termins zu erhalten.
Im angehängten Code bin ich gezwungen, nach close_pallets und close_units zu gruppieren, was sich auf das auswirkt, was ich sehe (d. h. mehrere zurückgegebene Zeilen pro Termin). Ich möchte nur nach a.appointment_id gruppieren, damit ich eine Zeile pro Termin erhalte. Was soll ich tun?
SELECT MAX(appointment_record_version_number), termine_id, date_pallets AS close_pallets, date_units AS close_units AUS b.dh WO last_updated_datetime ZWISCHEN „01.06.2023“ UND „30.06.2023“ UND Warehouse_id = 'xxx' GRUPPIERE NACH termine_id, close_pallets, close_units
您将需要使用子查询来实现这一点。实际上,您需要获取每个约会ID的最大记录版本:
你也可以使用JOIN语句来选择最大值,有时会更快:
根据您的用例,特别是如果您的数据库很大,您可以使用其他子查询或索引来进一步优化请求,但它已经相当快了。