2016-09-23 3 views
0

테이블에있는 다중 선택 행을 업데이트하는 데 문제가 있습니다. 이것은 내 검색어입니다. 누구든지이 문제를 알고 있습니까?db2에서 복수 선택 행을 업데이트하는 방법

--update mvp_employer-- 
set (MEI_EMP_CAT_CD) = 
(select case when a.MEI_EMP_CAT_CD is not null then a.MEI_EMP_CAT_CD else b.MEI_EMP_CAT_CD end MEI_EMP_CAT_CD 
from (
select MEI_ROC_NO,MEI_DOC_TYP_CD,MEI_EMP_CAT_CD from jimd2.mvp_employer 
where mei_roc_no in (select mei_roc_no from MVP_EMPLOYER 
WHERE MEI_DOC_TYP_CD IN ('632','999') 
group by mei_roc_no having count(*) >1) 
and MEI_DOC_TYP_CD IN ('632') 
order by mei_roc_no, mei_doc_typ_cd) a 
FULL JOIN 
(
select MEI_ROC_NO,MEI_DOC_TYP_CD,MEI_EMP_CAT_CD from jimd2.mvp_employer 
where mei_roc_no in (select mei_roc_no from MVP_EMPLOYER 
WHERE MEI_DOC_TYP_CD IN ('632','999') 
group by mei_roc_no having count(*) >1) 
and MEI_DOC_TYP_CD ='999' 
order by mei_roc_no, mei_doc_typ_cd) b 
on a.mei_roc_no = b.mei_roc_no 
) 
where MEI_DOC_TYP_CD IN ('632') 
and mei_roc_no ='AS0002107-A' 

ERROR : - 오류 코드 -811, SQL 상태 21000 : DB2의 SQL 오류 : SQLCODE = -811, SQLSTATE = 21000, SQLERRMC = NULL, DRIVER = 3.53.95

+0

SELECT의 독립 실행 형을 실행할 수 있습니까? youe 도움을 (모든 버전, 즉 하위 쿼리 및 완료.) – jarlh

+0

* MEI_EMP_CAT_CD PS PS PS PS PS PS의 * 이 내 result.it 많은 행 –

답변

0

당신은 아마 읽어야 오류 메시지 :

SQL0811N The result of a scalar fullselect, SELECT INTO statement, or VALUES INTO statement is more than one row

그래서 쿼리는 더 많은 행을 반환하고 DB2는 SET 절에 할당 된 하나 알 수 없습니다. 검색어를 수정하십시오. - 필요에 따라 별개를 추가하고 다시 시도하십시오.

+0

Tg는를 반환한다. yes.correct. 내 결과는 많은 행을 표시합니다.하지만 사실, 모든 행을 한 번 업데이트하고 싶습니다. 어떤 생각이 들었습니까? –

+0

하위 쿼리에서 반환 된 각 개별 값으로 여러 행을 업데이트하려는 경우 - 업데이트에서 상관 관계가있는 하위 쿼리를 검색하십시오. – MichaelTiefenbacher