Reputation: 2640
I have a CTE like this:
;WITH Lastdt AS
(
SELECT database_name, backup_finish_date,
ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date, database_name) AS 'RowNumber'
FROM bckHist
)
SELECT database_name, backup_finish_date
FROM Lastdt
WHERE RowNumber = '7'
How can I get last row with highest number from the query (replace hardcoded 7)?
Upvotes: 2
Views: 6725
Reputation: 129
SELECT database_name, backup_finish_date FROM bckHist WHERE RowNumber = (SELECT MAX(RowNumber) FROM bckHist)
Upvotes: 0
Reputation: 5248
If you really need only last row (from your query) then it even simpler (for given case):
select database_name, max(backup_finish_date)
from bckHist
group by database_name
Upvotes: 2
Reputation: 5806
I think it's easy...
;WITH Lastdt AS
(
SELECT database_name, backup_finish_date,
ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date desc, database_name) AS 'RowNumber'
FROM bckHist
)
SELECT database_name, backup_finish_date
FROM Lastdt
WHERE RowNumber = '1'
Upvotes: 2
Reputation: 754953
Try this:
;WITH Lastdt AS
(
SELECT database_name, backup_finish_date,
ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date, database_name) AS 'RowNumber'
FROM bckHist
)
SELECT TOP 1
database_name, backup_finish_date
FROM Lastdt
ORDER BY RowNumber DESC
Basically order the RowNumber
descending (largest first), and pick only the first one.
Upvotes: 1