Three table query to find the most recent item based on a distinct value
This returns the row from table A that relates to the most recent record in table B for each keyvaluebig in table C

Setup:

DECLARE @TableA TABLE
(
    itemnum INT
    , itemname NVARCHAR(50)
);

INSERT @TableA (itemnum, itemname)
VALUES (123, 'document #1'), (456, 'document #2');

DECLARE @TableB TABLE
(
    itemnum INT
    , keyvaluedate DATETIME2
);

INSERT @TableB (itemnum, keyvaluedate)
VALUES (123, '2015-09-05 00:00:00.000'), (456, '2011-06-04 00:00:00.000')
,(789, '2011-06-04 00:00:00.000'), (546, '2011-06-04 00:00:00.000')
,(378, '2011-06-04 00:00:00.000');

DECLARE @TableC TABLE
(
    itemnum INT
    , keyvaluebig BIGINT
);

INSERT @TableC (itemnum, keyvaluebig)
VALUES (123, 123456), (456, 987654), (545, 987654), (387, 987654);


Query:

WITH cte_Numbers
AS
(
    SELECT  c.keyvaluebig
            , b.itemnum
            , ROW_NUMBER() OVER(PARTITION BY c.keyvaluebig ORDER BY b.keyvaluedate desc) AS RowNumber
    FROM    @TableB b 
    JOIN    @TableC c ON b.itemnum = c.itemnum
)

SELECT  a.*
FROM    @TableA a
JOIN    cte_Numbers n ON a.itemnum = n.itemnum
WHERE   RowNumber = 1


As mentioned by Mark Sinkinson this really is the place to go to see how to do this sort of stuff