특정 유형의 트랜잭션 유형의 그룹화 된 합계가 0을 초과하는 경우에만 값으로 레코드를 업데이트하는 방법을 알아 내려고합니다. 즉, 결제 유형별로 거래를 그룹화합니다. 그룹화 된 결제 유형 합계가 0보다 크면 그룹의 각 거래를 값으로 업데이트하고 싶습니다. 나는 그 정확한 진술을 이해할 수 없다. 누구든지 제발 도와 줄 수 있습니까?
UPDATE
T
SET
T.col1 = OT.col1,
T.col2 = OT.col2
FROM
Some_Table T
INNER JOIN
Other_Table OT ON T.id = OT.id
WHERE
T.col3 = 'xyz'
-- GROUP BY T.col1
-- HAVING SUM(amount) > 0
a CTE
와 함께 사용할 수 있습니다 SUM() OVER()
.
;WITH ToUpdate AS (
SELECT T.col1 AS tcol1, OT.col1 AS otcol1, T.col2 AS tcol2, OT.col2 AS otcol2,
SUM(amount) OVER (PARTITION BY T.col1) AS sumAmount
FROM Some_Table T
INNER JOIN Other_Table OT ON T.id = OT.id
)
UPDATE ToUpdate
SET
tcol1 = otcol1,
tcol2 = otcol2
WHERE sumAmount > 0
위의 쿼리는 파티션에 Some_Table
속한 모든 행을 .col1
SUM(amount) > 0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다