SELECT DISTINCT TOP 6
a.logid ,
a.firmid ,
a.userid ,
a.fileid ,
a.filetype ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.Dob ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
ORDER BY a.logid DESC;
SELECT TOP 6 z.logid , r.* FROM
(
SELECT DISTINCT
a.firmid ,
a.userid ,
a.fileid ,
a.filetype ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.Dob ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
)r
CROSS APPLY
(
SELECT MAX(k.logid) logid
FROM dbo.LogSearches k
WHERE
k.firmid = r.firmid
k.userid = r.userid
k.fileid = r.fileid
k.filetype = r.filetype
k.searchdate = r.searchdate
)z
ORDER BY z.logid DESC;
SELECT TOP 6 z.logid , r.* FROM
(
SELECT DISTINCT
a.firmid ,
a.userid ,
a.fileid ,
a.filetype ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.Dob ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
)r
CROSS APPLY
(
SELECT MAX(k.logid) logid
FROM dbo.LogSearches k
WHERE
k.firmid = r.firmid
k.userid = r.userid
k.fileid = r.fileid
k.filetype = r.filetype
k.searchdate = r.searchdate
)z
ORDER BY r.searchdate DESC;
SELECT TOP 6
a.logid ,
a.firmid ,
a.userid ,
a.fileid ,
a.filetype ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.Dob ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
ORDER BY a.logid DESC
890 2 1713 30638 contact 2016-09-29 13:12:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
887 2 1713 30638 contact 2016-09-28 16:25:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
881 2 1713 30638 contact 2016-09-21 12:12:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
812 2 1713 30746 contact 2016-08-04 09:32:00 Gina CARDENAS 01/01/2000 2000-01-01 00:00:00.000
755 2 1713 31066 contact 2016-07-13 09:20:00 Maria DOE 01/02/2000 2000-01-02 00:00:00.000
752 2 1713 31735 contact 2016-07-13 09:13:00 Patti Doe 06/22/1977 1977-06-22 00:00:00.000
Vitor, this are the results (Data)Is what you're expecting to be returned? If so, then please add some raw data as well so we can have an idea which 6 records we should return from the universe of your data.
SELECT TOP 6 z.logid , r.* FROM
(
SELECT DISTINCT
a.firmid ,
a.userid ,
a.fileid ,
a.filetype ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.Dob ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
)r
CROSS APPLY
(
SELECT MAX(k.logid) logid
FROM dbo.LogSearches k
WHERE
k.firmid = r.firmid AND
k.userid = r.userid AND
k.fileid = r.fileid AND
k.filetype = r.filetype AND
k.searchdate = r.searchdate
)z
ORDER BY z.logid DESC;
890 2 1713 30638 contact 2016-09-29 13:12:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
887 2 1713 30638 contact 2016-09-28 16:25:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
881 2 1713 30638 contact 2016-09-21 12:12:00 Joe Doe 07/18/2016 2016-07-18 00:00:00.000
812 2 1713 30746 contact 2016-08-04 09:32:00 Gina CARDENAS 01/01/2000 2000-01-01 00:00:00.000
755 2 1713 31066 contact 2016-07-13 09:20:00 Maria DOE 01/02/2000 2000-01-02 00:00:00.000
752 2 1713 31735 contact 2016-07-13 09:13:00 Patti Doe 06/22/1977 1977-06-22 00:00:00.000
SELECT TOP 6 z.logid , r.* FROM
(
SELECT DISTINCT
a.fileid ,
a.searchdate ,
b.FirstNm ,
b.LastNm ,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
)r
CROSS APPLY
(
SELECT MAX(k.logid) logid
FROM dbo.LogSearches k
WHERE
k.fileid = r.fileid AND
k.searchdate = r.searchdate
)z
ORDER BY z.logid DESC;
Those 6 show 3 duplicate records. Same name and same DOB.Your definition of duplicate is not the same for a database and I think that's why a lot of confusion is still here. Also, that's why posting sample data of the source and the expected results helps a lot who is trying to give you a solution.
SELECT TOP 6
MAX(a.logid) LogID,
a.firmid,
a.userid,
a.fileid,
a.filetype,
MAX(a.searchdate),
b.FirstNm,
b.LastNm,
b.Dob,
b.DobD
FROM dbo.LogSearches a
INNER JOIN Users AS b ON b.UserId = a.fileid
WHERE a.firmid = 2
AND a.userid = 1713
AND a.filetype = 'contact'
GROUP BY a.firmid,
a.userid,
a.fileid,
a.filetype,
b.FirstNm,
b.LastNm,
b.Dob,
b.DobD
ORDER BY 1 DESC
As far as I understood, you want the latest right?
So, in your table, which is the column that stores the record date?
If you give me this information I can draft you a query.
Cheers,
Alex