2012-05-16 3 views
0

그룹별로 업데이트 할 때 몇 가지 질문을하고 SQL을 찾지 못했습니다. 그러나이 특정 쿼리에 대한 업데이트를 수행하는 방법을 파악할 수 없습니다.그룹화 된 SQL 업데이트

나는 많은 거래가있는 캐쉬백을 가지고 있으며, 은행 거래 내역서와 일치하지만 문제는 은행 거래 내역이 집계 된 금액이므로 특정 금액으로 거래 금액에 따라 그룹화해야합니다 이 합계 된 값에. 일단 긍정적 인 성냥이 있으면 나는 화해 할 것이다 그 그룹에있는 그 각 행을 현금 계산서에 새롭게해야한다. 내가 지금까지했던 어떤

는 ....

올바른 그룹을 얻을 수 있습니다 다음 일치하지만 분명히 이러한 행을 업데이트하는 방법을 잘 모릅니다 모든 값을 다시 가져 은행의 한 Statment에 내부에 가입 할

누구나 아이디어가 있습니까?

감사

+0

db 엔진을 사용하고 계십니까? 편집 : ups, can not help then;) – Sebas

+0

죄송합니다, MS SQL 2008 R2 – user744284

+2

일부 테이블 정의 및 샘플 데이터를 제공하면 답변을 얻으실 수 있습니다. 완전한 것일 필요는 없습니다. 실제로 집중도가 높은 코드를 게시하면 더 좋습니다. 또한 모든 SQL 솔루션이 모든 데이터베이스에 적합한 것은 아니라는 점을 알려 주시면 유용합니다. – APC

답변

0

당신은 임시 테이블에서 결과를 (MySQL의에서 임시 테이블을 CREATE)에 저장 한 다음 업데이 트를 필터링하는 데 사용할 수 있습니다.

SELECT id, name, firstname INTO #tmp FROM stuff; 
UPDATE other SET count='new value' WHERE id IN (SELECT id FROM #tmp); 

구문은 내가 제대로 이해하면, 당신은 선택 쿼리를 사용하여 업데이트 할 수있는 사용자를 결정하고 바로 다음을 업데이트 할 수 있습니다 MSSQL

0

를 사용하지 않기 때문에 어쩌면 잘못된. 다음과 같은 쿼리가 의도 한대로 수행됩니다 :

with toupdate as (select userid 
        from (select userid, sum(value) as sumvalue 
         from cashbook cb 
         group by userid 
         ) join 
         bankstatement bs 
         on cb.userid = bs.userid 
        where cb.sumvalue = bs.value 
       ) 
update cashbook 
    set reconciled = 1 
from toupdate 
where cashbook.userid = toupdaqte.userid