I have a table variable which consists of columns id, date and status as shown below
DECLARE @DateValues TABLE ( id int identity(1,1), dates datetime, status varchar (5) )
And follows is the sample data
INSERT INTO @DateValues values ('5/22/2021','') INSERT INTO @DateValues values ('5/21/2021','ABC') INSERT INTO @DateValues values ('5/22/2021','ABC')
Also declared a variable as shown below.
DECLARE @MaxID INT
From this table I need to get the row which containing the maximum value of date( MAX(dates) ) where status is ‘ABC’, from the above sample values, I should get the 3rd row as the result and I need to assign the corresponding id value of the row id to a variable (@MaxID).
I tried following queries but getting multiple result set
SELECT id, MAX(dates), Footer FROM @DateValues WHERE STATUS = 'ABC' GROUP BY id, STATUS SELECT id, dates, status FROM @DateValues WHERE dates = ( SELECT MAX(dates) FROM @DateValues );
I need something like:
@MaxID = id FROM @DateValues WHERE dates = ( SELECT MAX(dates) FROM @DateValues WHERE STATUS='ABC' );
Please help.
Advertisement
Answer
Is this what you want?
SELECT * FROM ( SELECT *, RN = ROW_NUMBER() OVER (ORDER BY dates DESC) FROM @DateValues WHERE status = 'ABC' ) AS D WHERE D.RN = 1