I am using the following stored procedure to get the newest date out of a column which works fine.
Can someone tell me how I have to amend this that I also get the rest of the data of this record selected (ie the one with the max date) ? The column in question is called "updated" and is formatted as datetime so the values there should be unique.
Example: The max value for column "updated" is the row with "itemID" = 3. In this case I also want the rest of the data in this row selected, say the columns are called col1, col2, col3, col4 + the column "updated".
My stored procedure:
SET NOCOUNT ON;
SELECT CONVERT(VARCHAR(11), MAX(updated), 106) AS lastUpdated
FROM MeetingDetails
WHERE itemStatus = 'active'
FOR XML PATH('updates'), ELEMENTS, TYPE, ROOT('root')
You could take the analytic approach:
SELECT *
FROM (SELECT col1, col2, col3, col4,
RANK() OVER (PARTITION BY col1, col2, col3
ORDER BY updated DESC) AS rk
FROM MeetingDetails
WHERE itemstatus = 'active') t
WHERE rk = 1
SELECT col1, col2, col3, col4, updated
FROM MeetingDetails
WHERE updated in (
SELECT MAX(updated)
FROM MeetingDetails
WHERE itemStatus = 'active'
)
This should be what you're looking for. From here, if you need to narrow it down further, just add more criteria to your where clause.
Here is the query:
set nocount on;
select
md.col1,
md.col2,
-- ......
convert(varchar(11), md.updated, 106) as lastUpdated
from
MeetingDetails md
where
md.itemStatus = 'active'
and md.updated = (select max(updated)
from MeetingDetails
where itemStatus = 'active')
for xml path('updates'), elements, type, root('root')
Based on how many records have the max(updated) this select may return more than one row and hence this query could return multiple nodes.
A simple TOP 1
clause with an ORDER BY
should work for you.
SELECT TOP 1 col1, col2, col3, col4,
updated
FROM @MeetingDetails
WHERE itemStatus = 'active'
ORDER BY
updated DESC
FOR XML PATH('updates'), ELEMENTS, TYPE, ROOT('root')
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.