我们有一个具有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”
所以我需要上面的返回是第一项的第一次扫描,第二项的第一次扫描,等等...
答案 0 :(得分:0)
解决方案是使用'distinct on'两个字段,同时更改我的联接。
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')