서버가 SQL 2000 이라 Row_number 같은 함수를 쓸수가 없어서 질문 드립니다.
=====================A : TABLE=================
ID DATE CHEK_PRESENT
---------------------------------------------------------------------------
A 2013-01-01
B 2013-01-02
C 2013-01-28
A 2013-01-04
B 2013-02-03
A 2013-12-20
B 2013-12-31
=====================B: TABLE=================
ID PRESENT
----------------------------------------------------------------------------
A RED_BOOK
B BLACK_BOX
C D_RING
라는 테이블이 있을시
A 테이블의 ID 별 최종일자의 CHEK_PRESENT 컬럼에 해당 ID의 선물을 UPDATE 하고 싶습니다.
ID DATE CHEK_PRESENT
A 2013-01-01
B 2013-01-02
C 2013-01-28 D_RING
A 2013-01-04
B 2013-02-03
A 2013-12-20 RED_BOX
B 2013-12-31 BLACK_BOX
이런식으로 UPDATE 를 하고 싶습니다.
조언 부탁드립니다.
Comment 4
-
군고구마
2013.12.09 14:12
-
우츄프라
2013.12.09 14:49
답변 감사합니다.
그런데 제가 설명을 잘못해서 그런지
이해를 잘 못하신듯 하네요.
테이블은 A 와 B가있고
A의 ID 별 마지막 날짜에 B의 선물이름을 넣는 것입니다.
-
Larry
2013.12.09 14:53
select id, max(date) from 테이블 Group by id
id 값에 해당하는 마지막 날짜 레코드 들만 가져온 뒤
해당 ID에 선물을 매칭해주면 되지 않을까요?
select * from
(select id, max(date) from 테이블 Group by id) A
left join
(select id, 선물) B on A.id = B.id
-
폭주
2013.12.09 14:55
테스트는 안해 봤지만 그냥 A테이블에 ID 별 최대값 가져인 내역 가져와서 B테이블 내역 업데이트 하시면 될듯 합니다.
예제입니다.
UPDATE A
SET A.CHEK_PRESENT=C.PRESENT
FROM A_TABLE A
JOIN
(
SELECT ID,MAX(DATE) AS LastDate
FROM A_TABLE
GROUP BY ID
) AS B
ON A.ID=B.ID AND A.DATE=B.LastDate
JOIN B_TABLE C
ON A.ID=C.ID
해당 테이블을 order by DATE desc를 추가하신다음에 그것의 아이디를 변수로 받아서
declare @userid
select top 1 @userid = CHEK_PRESENT
from 테이블
order by DATE desc
이렇게 하고
update 테이블
set = 값
where CHEK_PRESENT = @userid