create table tr1(
id int,
val int)
Create table tr2(
_id int,
val int)
insert into tr1
select 1, 1
insert into tr1
select 2, 3
insert into tr1
select 3, 2
insert into tr2
select 1, 0
insert into tr2
select 2, 0
insert into tr2
select 3, 0
tr2의 id값보다 tr1의 id가 작거나 같은 id에 들어있는 val 값의 합을
tr2의 같은 값의 id에있는 val에 업데이트 하려고 하는데요.
이것저것 해보는데 제한에 걸려 저의 머리에 두드러기가 일어나네요.
T_T 머리가 굳은듯.. 켁~
결과는 다음과 같이.. 나와야 하는데요 에궁
tr2
------------
id val
------------
1 , 1 <--- id1의 val (tr1)
2, 4 <---- id1 val + id2 val(t1)
3. 6 <---- id1 val + id2 val + id3 val(t1)
어찌보면 쉬운데 될듯 말듯 저를 괴롭힘 흑..
Comment 4
-
무념
2014.08.06 17:53
-
무념
2014.08.06 18:33
[제약이 반복 구조 No]
1. outer join 후 합산한 결과를 업데이트하면 되긴 하는데....
바로 업데이트는 안되려나요? 너무 많은걸 바라는 ㅋㅋ
-
건우아빠
2014.08.07 11:16
with res
as (select a.id , sum(b.val) val
from tr2 a
cross apply
(select val from tr1
where id <= a.id) b
group by a.id )
update a
set a.val = b.val
from tr2 a join res b on a.id = b.id
-
무념
2014.08.07 12:13
건우아빠님// 워! 감사합니다. cross apply란 것도 있었네요 ㅜㅜ.
구닥다리 버전의 sql server만 쓰다가 이번에 첨으로 2008을 쓰다보니 흑흑
역시 이래서 공부를 흑...
너무 감사드리고 추천 드려요 ㅎㅎ~!!!
저 같이 몰랐던 분이(있으려나 TT) 있을지도 모르니 apply에 대해 참조 URL 추가합니다.
http://technet.microsoft.com/ko-kr/library/ms175156(v=sql.105).aspx
쉽게 생각했다가
The multi-part identifier 라는 기분 좋은 메시지를 만나는 ㅋ.. 한번에 업데이트 하려고 했던게 죈가요?
커서를 안쓰려고 하니 힘드네요. 우웡우웡우웡~