[SQL] 그 합류 값의 합을 SQL 업데이트
SQL그 합류 값의 합을 SQL 업데이트
나는 그것의 합류 값의 합계에 데이터베이스의 필드를 업데이트하기 위해 노력하고있어 :
UPDATE P
SET extrasPrice = SUM(E.price)
FROM dbo.BookingPitchExtras AS E
INNER JOIN dbo.BookingPitches AS P ON E.pitchID = P.ID
AND P.bookingID = 1
WHERE E.[required] = 1
나는이 프로그램을 실행할 때 나는 다음과 같은 오류가 발생합니다 :
"An aggregate may not appear in the set list of an UPDATE statement."
어떤 아이디어?
해결법
-
==============================
1.이건 어때요:
이건 어때요:
UPDATE p SET p.extrasPrice = t.sumPrice FROM BookingPitches AS p INNER JOIN ( SELECT PitchID, SUM(Price) sumPrice FROM BookingPitchExtras WHERE [required] = 1 GROUP BY PitchID ) t ON t.PitchID = p.ID WHERE p.bookingID = 1
-
==============================
2.위의 방법으로 또 다른 표에 대한 별칭을 사용하고 있습니다 :
위의 방법으로 또 다른 표에 대한 별칭을 사용하고 있습니다 :
UPDATE T1 SET T1.extrasPrice = (SELECT SUM(T2.Price) FROM BookingPitchExtras T2 WHERE T2.pitchID = T1.ID) FROM BookingPitches T1;
-
==============================
3.이것은 유효한 오류입니다. 이것 좀 봐. 다음 (다른 사람이 아래의 제안)이 달성 할 수있는 방법입니다 : -
이것은 유효한 오류입니다. 이것 좀 봐. 다음 (다른 사람이 아래의 제안)이 달성 할 수있는 방법입니다 : -
UPDATE P SET extrasPrice = t.TotalPrice FROM BookingPitches AS P INNER JOIN ( SELECT PitchID, SUM(Price) TotalPrice FROM BookingPitchExtras GROUP BY PitchID ) t ON t.PitchID = p.ID
-
==============================
4.이 같은 뭔가가 필요 :
이 같은 뭔가가 필요 :
UPDATE P SET ExtrasPrice = E.TotalPrice FROM dbo.BookingPitches AS P INNER JOIN (SELECT BPE.PitchID, Sum(BPE.Price) AS TotalPrice FROM BookingPitchExtras AS BPE WHERE BPE.[Required] = 1 GROUP BY BPE.PitchID) AS E ON P.ID = E.PitchID WHERE P.BookingID = 1
-
==============================
5.저도 같은 문제로 실행하고 나는 (SQL 2005 이상 가능) 공통 테이블 식으로 해결할 수 있음을 발견 :
저도 같은 문제로 실행하고 나는 (SQL 2005 이상 가능) 공통 테이블 식으로 해결할 수 있음을 발견 :
;with cte as ( SELECT PitchID, SUM(Price) somePrice FROM BookingPitchExtras WHERE [required] = 1 GROUP BY PitchID) UPDATE p SET p.extrasPrice=cte.SomePrice FROM BookingPitches p INNER JOIN cte ON p.ID=cte.PitchID WHERE p.BookingID=1
-
==============================
6.포스트 그레스와 함께, 나는 나를 위해 작동이 함께 솔루션을 조정했다 :
포스트 그레스와 함께, 나는 나를 위해 작동이 함께 솔루션을 조정했다 :
UPDATE BookingPitches AS p SET extrasPrice = t.sumPrice FROM ( SELECT PitchID, SUM(Price) sumPrice FROM BookingPitchExtras WHERE [required] = 1 GROUP BY PitchID ) t WHERE t.PitchID = p.ID AND p.bookingID = 1
-
==============================
7.아래의 유사한 하위 쿼리를 사용합니다.
아래의 유사한 하위 쿼리를 사용합니다.
UPDATE P SET extrasPrice = sub.TotalPrice from BookingPitches p inner join (Select PitchID, Sum(Price) TotalPrice from dbo.BookingPitchExtras Where [Required] = 1 Group by Pitchid ) as Sub on p.Id = e.PitchId where p.BookingId = 1
from https://stackoverflow.com/questions/2502032/sql-update-to-the-sum-of-its-joined-values by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 하나를 제외한 모든 중복 레코드를 삭제 (0) | 2020.06.24 |
---|---|
[SQL] SQL 서버 저장 프로 시저는 테이블을 반환 (0) | 2020.06.24 |
[SQL] 어떻게 오라클 데이터베이스에 "&"같은 특수 문자를 입력하려면? [복제] (0) | 2020.06.24 |
[SQL] GROUP BY는 MAX 날짜를 가진 (0) | 2020.06.24 |
[SQL] 모든 SQL 서버 외래 키가 일치하는 인덱스가해야 하는가? (0) | 2020.06.24 |