私は、会社、仕事、日付別の「最初のスキャン」の数を決定する必要があるデータベースのレポートを作成しています。グループ内の最小レコード数をカウントする
スキャンテーブルには同じアイテムの複数のスキャンを含めることができますが、元のスキャンは特定のアイテムに一致する最も早い日付のスキャンであると特定できるCOUNTにのみ含めます。
この時私の最初の試みました:(約3倍あまりにも多くの)ものの
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);
これは、私の誤った結果を与えています。 MINレコードが各日付ごとに再計算されているため、1日目にMINが見つかった場合、3日目にそのレコードが見つかった可能性があります。
希望の結果を得るためにクエリを変更するにはどうすればよいですか?
あなたが投稿することができますいくつかのサンプルデータと必要なo/p – Teja