2016-11-08 1 views
2

에 의해 업데이트 최대로 문 그룹은이 같은 열이있는 SQL Server 테이블을 가지고 있지만 채워에만 Salary_ID 컬럼 :SQL 서버 -

Name: Salary 
Salary_ID, TotalAmount 

나는이 형식과 모든과 다른 SQL Server 테이블을 열은 인구 :

Name: SalaryImport 
Row_ID, Salary_ID, Amount 

나는 각 salary_id의 최대 row_id으로 Salary 테이블을 업데이트하려합니다. 현재 각각 의 인스턴스가 많으며 SalaryImport이고 가장 최근의 번호는 row_id으로 표시됩니다.

어떻게 수행 할 수 있는지에 대한 정보가 필요하십니까? 나는 같은 SQL 문을 실행하는 것입니다하지만 너무 많이 그룹화되어 생각 (그리고 선택에 있기 때문에 나는 그룹에서 양을 제거 할 수 있습니다!) :

select max(Row_ID), Salary_ID, Amount 
from SalaryImport e 
group by Row_ID, Amount 
+0

'GROUP BY'쿼리가 의미가 없습니다. –

+1

[열에 대한 최대 값을 가진 행 가져 오기] 가능한 중복 (http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for-a- 열) –

답변

5

사용 ROW_NUMBER 윈도우 함수

;with cte as 
(
select row_number() over(partition by Salary_ID order by Row_ID desc) as rn,* 
From yourtable 
) 
Update S 
Set TotalAmount = c.Amount 
From Salary s join cte c on s.Salary_ID = c.Salary_ID 
Where RN = 1 
+0

왜 downvoted입니까? –

+0

나는 수 백 번 게시 된 질문에 수 백 번 게시 된 답변을 복제하기 위해 다운 voted. IMO에 응답하기보다는 복제물에 플래그를 지정해야합니다. –

+0

나는 그것이 downvote의 타당한 이유라고 생각하지 않는다. –