Я создал этот код, чтобы вытащить билеты из нашей базы данных, а также вытащить последнюю дату записи и последнего пользователя билета. Он работает, за исключением того, что два человека (или более) создали заметку на последней дате (независимо от разницы во времени), она создаст несколько строк для каждого билета. Как это исправить? вот код:Только получить последнее время в SQL Server
Select distinct t.ticketID,
t.OpenDate,
c.categoryname,
s.statusname,
p.priorityname,
u.firstname,
u.lastname,
tu.firstname as 'tech_firstname',
tu.lastname as 'tech_lastname',
ltn.maxdate as 'last date',
ltu.firstname + ' ' + ltu.lastname as 'Last User'
from ticket t
left join category c on t.categoryid = c.categoryid
left join [status] s on t.statusid = s.statusid
left join [priority] p on t.priorityid = p.priorityid
left join [user] u on t.userid = u.userid
left join [user] tu on t.technicianid = tu.userid
left join ticketnote tn on t.ticketid = tn.ticketid
inner join (
Select Max(TicketNoteDate) as MaxDate, max(cast(ticketnotedate as time)) as MaxTime, ticketid, userid
From ticketNote
group by ticketid, userid) ltn on tn.ticketid = ltn.ticketid and tn.ticketnotedate = ltn.maxdate and cast(tn.ticketnotedate as time) = ltn.maxtime
left join [user] ltu on ltn.userid = ltu.userid
where t.statusid = 1
and t.LocationID = 1
order by t.ticketid
Вам лучше показать некоторые данные образца. – dario
google 'SQL SERVER ROW_NUMBER() Функция' –
Вместо MAX() в вашем подзапросе используйте Row_Number или даже TOP 1. –