我正在构建一个数据库的报告,我需要根据公司,作业和日期确定“第一次扫描”的数量。计算组内的最小记录数
扫描表可以包含同一项目的多个扫描,但是我只想将原始扫描包括在我的COUNT中,该扫描只能被识别为与特定项目匹配的最早日期的扫描。
我在这第一次尝试:
SELECT
_item_detail.job_id,
_item_group.group_id,
_scan.company_id,
DATE(scan_date_time) as scan_date,
COUNT(1)
FROM _scan
INNER JOIN _item_detail ON _item_detail.company_id = _scan.company_id
AND
_item_detail.serial_number = _scan.serial_number
INNER JOIN _item_group ON _item_group.group_id = _item_detail.group_id
WHERE _item_detail.job_id = '0326FCM' AND _scan.company_id = '152345' AND _item_group.group_id = 13
GROUP BY
_item_detail.job_id,
_item_group.group_id,
_scan.company_id, scan_date -- first_scan_count
HAVING min(scan_date_time);
这是给我的不正确的结果,但(约3倍太多)。我假设这是因为MIN记录正在为每个日期重新计算,所以如果在第1天发现最小值,它也可能在第3天被发现并再次计数。
如何修改我的查询以获得所需的结果?
你能交一些示例数据和所需的o/p – Teja 2012-04-06 16:30:39