FORMULA & SQL / CLEANUP
Flag the first time a value appears.
Tested, not guessed.
The Excel and Google Sheets formula and the SQL query, each run on the rows below. Open this with your own data ↗
The example rows
| Row | A: Region | B: Rep | C: Amount | D: Order Date | E: Status | F: Customer |
|---|---|---|---|---|---|---|
| 2 | North | Ana | 1,200 | 2026-03-01 | Paid | Jo Smith |
| 3 | South | Ben | 450 | 2026-03-15 | Open | Raj Patel |
| 4 | North | Cy | 300 | 2026-04-02 | Paid | Lee Wong |
| 5 | East | Ana | 980.50 | 2026-04-20 | Paid | Mia Ross |
| 6 | North | Ben | 75 | 2026-05-05 | Open | Jo Smith |
| 7 | West | Dee | 1,640 | 2026-05-18 | Paid | Sam Okoro |
The formula
Excel
=IF(COUNTIF(A$2:A2,A2)=1,"First","Repeat")
If the number of cells in the Region column (A$2:A2) that are Region (A2) equals 1, then "First", otherwise "Repeat".
Run on the example rows:
| Row | Result |
|---|---|
| 2 | First |
| 3 | First |
| 4 | Repeat |
| 5 | First |
| 6 | Repeat |
| 7 | First |
The SQL
PostgreSQL
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
Run on the example rows:
| region | rep | amount | order_date | status | customer | occurrence |
|---|---|---|---|---|---|---|
| East | Ana | 980.5 | 2026-04-20 | Paid | Mia Ross | First |
| North | Ana | 1200 | 2026-03-01 | Paid | Jo Smith | First |
| North | Cy | 300 | 2026-04-02 | Paid | Lee Wong | Repeat |
| North | Ben | 75 | 2026-05-05 | Open | Jo Smith | Repeat |
| South | Ben | 450 | 2026-03-15 | Open | Raj Patel | First |
| West | Dee | 1640 | 2026-05-18 | Paid | Sam Okoro | First |
Other databases
MySQL
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
SQL Server
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
SQLite
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
BigQuery
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
Snowflake
SELECT *, CASE WHEN ROW_NUMBER() OVER (PARTITION BY region ORDER BY region) = 1 THEN 'First' ELSE 'Repeat' END AS occurrence FROM sales
Your own data
Paste your rows into the free tool and it writes this for your columns, then runs it on your data before you copy it. Open the tool ↗