У нас есть система, которая имеет item_numbers и сканирует эти номера элементов. Мне нужен запрос, который возвращает первую запись сканирования для каждого элемента.
SELECT item_number, dis.scan_datetime, dli.item_sequence_no
FROM distribution_stop_information dsi
join distribution_line_items dli on dsi.unique_id_no = dli.unique_id_no
join distribution_item_scans dis on stop_unique_id_no = dli.unique_id_no
WHERE dis.scan_type = 9 and (dli.item_sequence_no = dis.item_sequence_no ) and
dsi.unique_id_no = 245769
это возвращает набор данных, который включает запись для каждого сканирования для каждого элемента:
"132275190501001" "2019-05-02 06:07:44" "1"
"132275190501001" "2019-05-02 07:04:42" "1"
"089275190501001" "2019-05-02 06:07:54" "2"
"089275190501001" "2019-05-02 07:04:52" "2"
Итак, мне нужно, чтобы вышеизложенное возвращалось, это первое сканирование для первого элемента и первое сканирование для второго элемента и т. д.





Решение состояло в том, чтобы использовать два поля «отлично» вместе с изменением моего соединения.
SELECT distinct on (dis.item_sequence_no, item_number) item_number, dis.scan_datetime
FROM distribution_stop_information dsi
join distribution_line_items dli on dsi.unique_id_no = dli.unique_id_no
join distribution_item_scans dis on stop_unique_id_no = dli.unique_id_no
WHERE (dis.scan_type = 2) and (dli.item_sequence_no = dis.item_sequence_no ) and
(dsi.route_date = '4/30/2019' and dsi.company_no = '11' and customer_no = '1000' and dli.company_no = '11')
Опубликованные вами образцы данных показывают, что единственная разница между элементами — это дата, и вы хотите выбрать только строку с минимальной датой. Так ли это или бывают случаи, когда пара item_number и item_sequence_no будет разной для одного элемента?