dvanaria dvanaria - 1 month ago 7
SQL Question

SQL: How To Select Earliest Row

I have a report that looks something like this:

CompanyA Workflow27 June5
CompanyA Workflow27 June8
CompanyA Workflow27 June12
CompanyB Workflow13 Apr4
CompanyB Workflow13 Apr9
CompanyB Workflow20 Dec11
CompanyB Wofkflow20 Dec17


This is done with SQL (specifically, T-SQL version Server 2005):

SELECT company
, workflow
, date
FROM workflowTable


I would like the report to show just the earliest dates for each workflow:

CompanyA Workflow27 June5
CompanyB Workflow13 Apr4
CompanyB Workflow20 Dec11


Any ideas? I can't figure this out. I've tried using a nested select that returns the earliest tray date, and then setting that in the WHERE clause. This works great if there were only one company:

SELECT company
, workflow
, date
FROM workflowTable
WHERE date = (SELECT TOP 1 date
FROM workflowTable
ORDER BY date)


but this obviously won't work if there is more than one company in that table. Any help is appreciated!

Answer

Simply use min()

select company, workflow, min(date) 
from workflowTable 
group by company, workflow
Comments