[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 210
  • Last Modified:

SQL Get MIN row for each record

Hello I have the following table data(posed in the CODE sec.  

wondering how to get the row data with the min date from each OPID.  If the 2nd Window date is less than 1st Window date then the 2nd Window should be read.    

get the min date goes something like...
Select distinct min DATE, OPID, Window
from TABLE

But the problem is if the 2nd window is the lesser date of the windows.
Accnt	OPID	DATE	Window 
34	1	9/22/11 12:32 PM	1st WINDOW
34	1	9/22/11 12:33 PM	2nd WINDOW
12	2	9/21/11 11:02 AM	1st WINDOW
12	2	9/21/11 11:01 AM	2nd Window
455	1	9/22/11 1:09pm	1st WINDOW

Open in new window

0
TechMonster
Asked:
TechMonster
  • 4
  • 3
1 Solution
 
HainKurtSr. System AnalystCommented:
try:

select * from (
select *, row_number() over (partition by opid order by window) rn
from myTable ) x
where rn=1
0
 
HainKurtSr. System AnalystCommented:
oops, we should sue [DATE]

select * from (
select *, row_number() over (partition by opid order by [DATE]) rn
from myTable ) x
where rn=1
0
 
TechMonsterAuthor Commented:
i think that got it!  Have to test it out a few more times though...thanks.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
TechMonsterAuthor Commented:
Well it gets the min from all DATes..but I have to get the row by min dateTime for each day.
0
 
HainKurtSr. System AnalystCommented:
then you should partition by day & opid

easy way is to get date part

select floor(cast(GETDATE() as float))

select * from (
select *, row_number() over (partition by opid,  floor(cast([DATE] as float)) order by [DATE]) rn
from myTable ) x
where rn=1
0
 
HainKurtSr. System AnalystCommented:
or use CONVERT(varchar, getdate(), 101) -- to get rid of time part and group by date only like : 09/23/2011

select * from (
select *, row_number() over (partition by opid, CONVERT(varchar, getdate(), 101) order by [DATE]) rn
from myTable ) x
where rn=1
0
 
TechMonsterAuthor Commented:
Perfect..thanks again
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now