Select max id and date
-
Wednesday, August 08, 2012 7:20 PM
Hi Experts ,Please Help me with Below Requirement
SELECT 1 AS PRODUCD_id ,100 CASE_NUMBER,'2012-02-13' AS CASE_DATE
uNION ALL
SELECT 2 AS PRODUCD_id ,100 CASE_NUMBER,'2012-02-15' AS CASE_DATE
uNION ALL
SELECT 3 AS PRODUCD_id ,100 CASE_NUMBER,'2012-09-01' AS CASE_DATE
uNION ALL
SELECT 4 AS PRODUCD_id ,100 CASE_NUMBER,'2012-03-31' AS CASE_DATE
uNION ALLSELECT 5 AS PRODUCD_id ,101 CASE_NUMBER,'2012-01-15' AS CASE_DATE
uNION ALL
SELECT 6 AS PRODUCD_id ,101 CASE_NUMBER,'2012-01-18' AS CASE_DATE
uNION ALL
SELECT 7 AS PRODUCD_id ,101 CASE_NUMBER,'2012-05-13' AS CASE_DATE
uNION ALL
SELECT 8 AS PRODUCD_id ,101 CASE_NUMBER,'2012-06-11' AS CASE_DATE
uNION ALLSELECT 9 AS PRODUCD_id ,102 CASE_NUMBER,'2012-12-18' AS CASE_DATE
uNION ALL
SELECT 10 AS PRODUCD_id ,102 CASE_NUMBER,'2012-02-26' AS CASE_DATE
uNION ALL
SELECT 11 AS PRODUCD_id ,102 CASE_NUMBER,'2012-10-13' AS CASE_DATE
uNION ALL
I NEED PRODUCT_ID,CASE_NUMBER AND CASE_DATE WHERE CASE_DATE IS MAX FOR CASE_NUMBER
OUTPUT SHOULD BESELECT 3 AS PRODUCD_id ,100 CASE_NUMBER,'2012-09-01' AS CASE_DATE
uNION ALL
SELECT 8 AS PRODUCD_id ,101 CASE_NUMBER,'2012-06-11' AS CASE_DATE
uNION ALL
SELECT 9 AS PRODUCD_id ,102 CASE_NUMBER,'2012-12-18' AS CASE_DATE- Moved by Tom PhillipsModerator Wednesday, August 08, 2012 7:32 PM TSQL question (From:SQL Server Database Engine)
All Replies
-
Wednesday, August 08, 2012 7:38 PM
You can do this using the ROW_NUMBER() window function:
;with cte as ( Select PRODUCT_ID ,CASE_NUMBER ,CASE_DATE ,ROW_NUMBER() OVER(Partition By CASE_NUMBER Order By CASE_DATE Desc) as RowNum From @tvTable ) Select PRODUCT_ID ,CASE_NUMBER ,CASE_DATE From cte Where RowNum = 1
MSDN Page for ROW_NUMBER(): http://msdn.microsoft.com/en-us/library/ms186734.aspx
- Proposed As Answer by Christa Kurschat Wednesday, August 08, 2012 7:47 PM
- Marked As Answer by Iric WenModerator Thursday, August 16, 2012 9:48 AM
-
Wednesday, August 08, 2012 7:52 PM
Johnson's solution will work adding a condition where RowNum=1.
;with cte as ( Select PRODUCT_ID ,CASE_NUMBER ,CASE_DATE ,ROW_NUMBER() OVER(Partition By CASE_NUMBER Order By CASE_DATE Desc) as RowNum From @tvTable ) Select PRODUCT_ID ,CASE_NUMBER ,CASE_DATE From cte Where RowNum=1
Please click the Mark as Answer or Vote As Helpful button if a post solves your problem or is helpful!
- Edited by Latheesh NKMicrosoft Community Contributor Wednesday, August 08, 2012 7:52 PM
-
Thursday, August 09, 2012 12:44 AM
Onother way is
declare @t table(product_id int,case_number int,case_date date) insert into @t values(1,100,'2012-02-13'),(2,100,'2012-02-15') ,(3,100,'2012-09-01'),(4,100,'2012-03-31'),(5,101,'2012-01-15') ,(6,101,'2012-01-18'),(7,101,'2012-05-13'),(8,101,'2012-06-11') ,(9,102,'2012-12-18'),(10,102,'2012-02-26'),(11,102,'2012-10-13'); select t.* from (select MAX(case_date) as case_date from @t group by case_number) as t1 join @t as t on t.case_date = t1.case_date RESULTS: product_id case_number case_date 3 100 2012-09-01 8 101 2012-06-11 9 102 2012-12-18
ESHANI. Please click "Mark As Answer" if a post solves your problem or "Vote As Helpful" if a post has been useful to you
- Edited by Eshani Rao Thursday, August 09, 2012 12:45 AM

