Я использую SSMS 2008, и я создал набор данных со sproc, который возвращает много записей.Однако существует столбец даты, который может иметь то же значение в этом наборе данных.Теперь я хочу отфильтровать эти записи, чтобы они включали только самые последние данные из этого набора данных.Как мне сделать это в T-SQL?(Я хочу видеть только 2/5 записей ниже).
Например:
col A col B col C
AAAAAA BBBBBB 2/5/2012
AAAAA2 BBBBB2 2/5/2012
AAAAA3 BBBBB3 2/1/2012
AAAAA4 BBBBB4 1/25/2012
AAAAA5 BBBBB5 1/25/2012
AAAAA6 BBBBB6 1/10/2012
Я попробовал ваш solutoin Andreas, но сейчас получаю ошибку:
Сообщение 102, уровень 15, состояние 1, строка 74 Неверный синтаксис рядом с ')'.
Вот фрагмент кода:
select *
from (
select *, row_number() over(partition by [test_details_answers_expanded_view].[actual_date]
order by [test_details_answers_expanded_view].[actual_date] desc) rowno
from
(
Select
[test_details_answers_expanded_view].[event_log_id],
...
[test_details_answers_expanded_view].[actual_date],
...
FROM #TEMP_EVENT_LOG A
JOIN [evolv_reports].[dbo].[test_header_rv] ON A.[event_log_id] = [test_header_rv].[event_log_id]
CROSS APPLY [dbo].[fn_getTestSetupFormDetails](null, [test_header_rv].[test_setup_header_id]) AS [test_header]
CROSS APPLY [dbo].[fn_getTestSetupFormDetails]([test_header].[test_setup_details_id], null) AS [test_details]
JOIN [evolv_reports].[dbo].[test_details_answers_expanded_view] ON
[test_header_rv].[test_header_id] = [test_details_answers_expanded_view].[test_header_id]
AND [test_details].[test_setup_details_id] = [test_details_answers_expanded_view].[test_setup_details_id]
Where
(@TestHeaderCode Is Null OR [test_header].[test_header_code] = @TestHeaderCode)
AND (@TestHeaderID Is Null OR [test_header_rv].[test_header_id] = @TestHeaderID)
) t
where rowno = 1
Можете ли вы сказатьчто я тут не так сделал?