• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 200
  • Last Modified:

Sql query

Hi,

I need to write a query that gives me following results.

Table :

EDUID	      START_TIME                 DTMF

4e418e4f 2011-08-09 22:48:53.827 2164724036
4e418e55 2011-08-09 22:51:44.687 2125539806
4e419196 2011-08-09 22:58:36.950 2125354614
4e419181 2011-08-09 22:59:08.697 2
4e419188 2011-08-09 22:59:16.347 4642260017
4e419181 2011-08-09 22:59:28.597 nmt              
4e419196 2011-08-09 22:59:30.053 2164423695
4e41919d 2011-08-09 22:59:36.387 Disc
4e419198 2011-08-09 22:59:31.683 nmt              
4e418e4f	2011-08-09 22:59:30.530 224243
4e419188 2011-08-09 22:59:39.347 4642265000

Open in new window



Query should give last records of each EDUID value.

Expected Result:

EDUID       START_TIME     DTMF
4e418e4f	2011-08-09 22:59:30.530 224243
4e419181  2011-08-09 22:59:28.597 nmt
4e419196  2011-08-09 22:59:30.053 2164423695
4e418e55  2011-08-09 22:51:44.687 2125539806
4e419188  2011-08-09 22:59:39.347 4642265000
4e41919d  2011-08-09 22:59:36.387  Disc
4e419198  2011-08-09 22:59:31.683  nmt

Open in new window


Thanks.




0
fiore45
Asked:
fiore45
1 Solution
 
Patrick MatthewsCommented:
SELECT t1.EDUID, t1.START_TIME, t1.DTMF
FROM SomeTable t1 INNER JOIN
    (SELECT t2.EDUID, MAX(t2.START_TIME) AS START_TIME
    FROM SomeTable t2
    GROUP BY t2.EDUID) x ON t1.EDUID = x.EDUID AND t1.START_TIME = x.START_TIME
0
 
pramodsk40Commented:
why dont you use order by asc or desc which ever way you want for starttime or eduid ?
0
 
LowfatspreadCommented:
select eduid,starttime,dtmf
from (select x.*
               ,row_number() over (partition by eduid order by starttime desc) as rn
                      from yourtable as x
         ) as y
where y.rn=1
order by 1
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
sachinpatil10dCommented:
select * from Test1 where START_TIME in (select MAX(start_time) start_time from test1 group by eduid)
0
 
LowfatspreadCommented:
@sachinpatil10d
   the subquery would need to be corelated otherwise multiple rows per eduid could be present....
0
 
sachinpatil10dCommented:
@Lowfatspread

multiple rows case would be if the start_time is same for same eduid

so can i think this query should work

select distinct * from Test1 where START_TIME in (select MAX(start_time) start_time from test1 group by eduid)
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

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