Attendance register
One row per person per scan, for classes, shifts and roll call.
Attendance codes are usually a single ID with nothing to split, so the useful work is adding a readable timestamp and a status column you can filter. Keep one row per scan rather than one row per person: it gives you an audit trail, and a pivot table still gets you the daily count.
A code like this
Becomes this row
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| scanned_at | scanner | device_id | student_id | scanned_at | recorded_by |
| 2026-08-23 09:14:02 | Gate A | iPhone-a91c | STU-4417 | 2026-08-23 09:14:02 | Gate A |
Columns A–C are the tracking prefix. Your mapped columns start at D.