MS SQL Server에는 다음과 같은 기능이 있습니다.
UPDATE r
SET
monthly =
(
SELECT SUM(-h.value_ini - h.purchase + h.sold + h.value_fin)
FROM hist_portfolio AS h
WHERE h.comp_id = r.comp_id
AND h.port_id = r.port_id
AND h.exte_id = r.cate_id
AND h.type_id = @type_rel_aux
AND h.hcar_day > @date_month_before
AND h.hcar_day <= @date_base
)
FROM #Month_Table r
WHERE type = 1;
그 결과 (업데이트 후) :
Seq monthly
2 102471,34
1 -5129,46
3 -29841,23
4 0
그러나 PostgreSQL의 기능에서 동일한 업데이트를 실행하면 모든 행이 동일한 값을 얻습니다.
UPDATE Month_Table
SET variacao_mes_rs = (
SELECT SUM(-h.value_ini - h.purchase + h.sold + h.value_fin)
FROM hist_portfolio AS h
WHERE h.comp_id = r.comp_id
AND h.port_id = r.port_id
AND h.exte_id = r.cate_id
AND h.type_id = v_type_rel_aux
AND h.hcar_day > v_date_month_before
AND h.hcar_day <= v_date_base) FROM Month_Table r WHERE type = 1;
결과 (업데이트 후), 시퀀스 3의 모든 값 :]
Seq monthly
1 -29841,23
2 -29841,23
3 -29841,23
4 -29841,23
문제의 원인이 보이지 않습니다 ... PostgreSQL은 UPDATE에 대해 다른 규칙을 가지고 있습니까? 누구든지 나를 도울 수 있습니까?
FROM
Postgres 에서 절을 제거하십시오 .
UPDATE Month_Table r
SET variacao_mes_rs = (
SELECT SUM(-h.value_ini - h.purchase + h.sold + h.value_fin)
FROM hist_portfolio AS h
WHERE h.comp_id = r.comp_id
AND h.port_id = r.port_id
AND h.exte_id = r.cate_id
AND h.type_id = v_type_rel_aux
AND h.hcar_day > v_date_month_before
AND h.hcar_day <= v_date_base)
WHERE type = 1;
의 FROM
절 UPDATE
은 발견 한 것처럼 두 데이터베이스에서 다르게 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다