2012-05-14 4 views
0

하위 쿼리를 통해 형성된 테이블의 열 합계를 가져 오는 쿼리가 있습니다. 라인에서DB2 및 Jasper 보고서의 COALESCE 관련 문제

뭔가 : temp.mySum가 null의 경우

select temp.mySum as MySum from (select sum(myColumn) from mySchema.myTable) temp; 

그러나, 나는 MySum가 null 싶지 않아. 대신 temp.mySum이 null 일 때 MySum이 문자열 'value not available'을 전달하기를 원합니다.

쿼리 상기 그러나
select coalesce(temp.mySum, 'value not available') as MySum from (select sum(myColumn) from mySchema.myTable) temp; 

가 던지는 오류 메시지 :

따라서 I를 아래와 같이 병합 사용하려고

Message: The data type, length or value of argument "2" of routine "SYSIBM.COALESCE" is incorrect. 

이 메시지는 인수 1과 2 사이 때문에 데이터 유형 호환성이며 아래의 첫 번째 대답에서 언급 한 기능을 병합합니다. , 엑셀 시트에서

hashmap.put("myQuery", this.myQuery); 
JasperReport jasperReportOne = JasperCompileManager.compileReport(this.reportJRXML); 
JasperPrint jasperPrintBranchCd = JasperFillManager.fillReport(jasperReportOne , hashmap, con); 
jprintList.add(jasperPrintOne); 
JRXlsExporter exporterXLS = new JRXlsExporter(); 
exporterXLS.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jprintList); 
exporterXLS.exportReport(); 

을 값을 사용할 수 없을 때 나는 널 (null)로 값을 얻고있다 :

그러나, 나는 직접 Excel 시트 보고서에 값을 보낼 재스퍼에서이 쿼리를 사용하고 있습니다. 보고서에 '사용할 수없는 가치'를 표시하고 싶습니다.

어떻게 달성 될 수 있습니까?

읽어 주셔서 감사합니다.

답변

2

병합 인수는 호환 가능해야합니다. 첫 번째 숫자 (숫자는 mySum 일 가능성이 큽니다)이고 두 번째 숫자는 문자열입니다.

예를 들어 다음과 같은 PubLib doco에는 여러 유형 간의 호환성을 나타내는 테이블이 있습니다 (적어도 메인 프레임과 관련된 DB2의 경우) - 의심 할 여지없이 iSeries 및 LUW 변형에도 유사한 제한 사항이 있습니다.

대신 coalesce(temp.mySum, 0)과 같은 것을 시도하거나 첫 번째 인수를 char()과 같은 문자열로 변환 할 수 있습니다. 두 인자가 호환 가능하기 때문에 이들 중 하나가 작동해야합니다.

+0

예, 'COALESCE (CHAR (temp.mysum),'값을 사용할 수 없음 ')'은 DB2 LUW에서 원하는 결과를 제공합니다 –

관련 문제