【发布时间】:2012-04-06 16:23:08
【问题描述】:
我正在为需要确定按公司、工作和日期分组的“首次扫描”次数的数据库构建报告。
扫描表可以包含对同一项目的多次扫描,但我只想将原始扫描包含在我的 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