0
SSMS 2008을 사용하고 있으며 많은 레코드를 반환하는 sproc로 데이터 세트를 만들었습니다. 그러나이 데이터 세트 내에서 동일한 값을 가질 수있는 날짜 열이 있습니다. 이제는이 데이터 세트의 최신 데이터 만 포함하도록 이러한 레코드를 필터링합니다. T-SQL에서는 어떻게합니까? (나는 단지 아래 2/5 기록을보고 싶다). 예를 들어기준과 일치하는 상위 N 개의 행을 지정하는 방법은 무엇입니까?
:
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 안드레아스을했지만, 지금은 오류를 얻고있다 :
는 코드인가?메시지 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
당신은 내가 잘못 여기에 무슨 짓을했는지 말해 줄 수 : 여기
네,하지만 나는 TOP 문을 사용하는 경우, 나는 그것을 선택하는 레코드 수를 알 필요가 없다? 나는 이것이 동적 인 솔루션이되기를 원한다. 행의 수에 관계없이 최신 레코드를 선택할 것이다. – salvationishere
@salvationishere 귀하의 질문에 대한 오해, 제발 내 대답을 업데이 트하십시오. –
Andreas, 내 개정 된 설명을 확인해 주시겠습니까? – salvationishere