Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
mxmiked
Starting Member
3 Posts |
Posted - 2009-09-01 : 09:58:47
|
| I have a table like this.USE [database1]GO/****** Object: Table [dbo].[info_table] Script Date: 09/01/2009 09:44:46 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[info_table]( [car_make_id] [smallint] NOT NULL, [driver_id] [int] NOT NULL, [last_used] [datetime] NULL CONSTRAINT ) ON [PRIMARY]GOSET ANSI_PADDING OFFA driver can have multiple cars so data can look like this.car_make_id,driver_id,last_used281,4820,'2008-05-18 01:42:22'283,4820,'2008-02-16 15:51:39'281,4820,'2008-12-14 23:29:42'281,5920,'2008-08-22 16:46:59'283,5920,'2008-04-17 03:23:15'281,5920,'2008-10-11 09:16:38'I need to determine which drivers, drove which car, last.My *not working* query so far.SELECT driver_id,MAX(last_used) AS last_usedFROM database1.dbo.info_tableGROUP BY driver_idThis is not a bad start but I don't know which car was used.OBVIOUSLY...SELECT driver_id,car_make_id,MAX(last_used) AS last_usedFROM database1.dbo.info_tableGROUP BY driver_id,car_make_idWill not work because it will return everything.Any ideas on how to do this? |
|
|
vijayisonly
Master Smack Fu Yak Hacker
1836 Posts |
Posted - 2009-09-01 : 10:04:08
|
| [code]SELECT a.car_make_id,a.driver_id,a.last_used FROM(SELECT car_make_id,driver_id,last_used, row_number () over (partition by driver_id order by last_used desc) as seq FROM info_table) aWHERE a.seq = 1[/code] |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2009-09-01 : 10:05:54
|
| Try thisselect t1.* from database1.dbo.info_table as t1 inner join(SELECT driver_id,MAX(last_used) AS last_usedFROM database1.dbo.info_tableGROUP BY driver_id) as t2 on t1.driver_id=t2.driver_id and t1.last_used=t2.last_used MadhivananFailing to plan is Planning to fail |
 |
|
|
mxmiked
Starting Member
3 Posts |
Posted - 2009-09-01 : 10:07:41
|
quote: Originally posted by vijayisonly
SELECT a.car_make_id,a.driver_id,a.last_used FROM(SELECT car_make_id,driver_id,last_used, row_number () over (partition by driver_id order by last_used desc) as seq FROM info_table) AWHERE A.seq = 1
Wow, that looks amazing, will try it now. |
 |
|
|
mxmiked
Starting Member
3 Posts |
Posted - 2009-09-01 : 10:15:03
|
quote: Originally posted by vijayisonly
SELECT a.car_make_id,a.driver_id,a.last_used FROM(SELECT car_make_id,driver_id,last_used, row_number () over (partition by driver_id order by last_used desc) as seq FROM info_table) aWHERE a.seq = 1
Worked perfectly! This is awesome! |
 |
|
|
vijayisonly
Master Smack Fu Yak Hacker
1836 Posts |
Posted - 2009-09-01 : 10:21:45
|
welcome |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
|
|
|
|
|
|
|