입니다. 정확한 검색 조건을 사용하고 있는지 확실하지 않습니다. 아니면 불가능할 수도 있습니다. 하지만 내가 뭘 하려는지 설정 값보다 작은 합계 값을 만드는 테이블의 모든 레코드를 업데이 트하는 것입니다.업데이트 조건에 SUM을 사용합니다. 여기서 조건은
ID type amount received_date processed_date
1 debit 10 7/1/2010 NULL
2 debit 10 7/2/2010 NULL
3 debit 10 7/3/2010 NULL
지금은 무엇을 원하는 업데이트가 나는 1과 2는 것 합 ID를 할 것 그래서 미만 (22)의 합과 같다 모든 기록입니다 : 그래서 여기
은 예입니다 20보다 작 으면 22입니다.하지만 역시 processed_date에 대해 null이있는 레코드 만 필요합니다. 또한 가장 오래된 것부터 최신의 것까지 업데이트되도록 작동하고 싶습니다.
UPDATE credits
SET date_processed = '8/1/2010'
WHERE SUM(amount) <= @total AND
credit_type = [debits]
하지만이 작동하지 않는 것을 알고 : 기본적으로 여기
내가 의사 코드를 작성합니다 방법이다. 그래서 나는 어떤 SQL 마스터가 아이디어를 가지길 희망한다.
나는 이것을 커서 안에서 쓸 수있을 것이라고 확신하지만 이것을 수행하기위한 기반 기반 방법이 있는지 궁금합니다.
편집 : 아래 표와 간단한 설명을 업데이트하여 내 상황을 더 잘 묘사했습니다.
주문 준비가되어 있으므로 걱정하지 않아도됩니다. 나는 그저 간결함을 위해 그것을 잘라 냈다.하지만 당신은 내가 알아 냈다고 생각하고 있습니다. 여기에 내가 무엇을 최대 온 것입니다 : UPDATE 크레딧 SET date_processed = '2010년 8월 1일' WHERE IN ID (크레딧 credit_type = [차변] ID BY GROUP ABS를 갖는 (SUM 이드 을 선택 (amount))) <= @ total – spinon
토마스 나는 내 자신의 질문에 대해 막 대답하려고했으나 그렇게 할 때 나는 돼지처럼 느껴져서 당신이 이것을 기쁘게 생각합니다. 이제 나는해야만합니다. – spinon
실제로 레코드별로 그룹화했기 때문에 실제로 정확하지 않은 ID로 그룹화했기 때문에 실제로 더 나았습니다. 너는 그룹화를 올바르게 할 것이다. – spinon