Cognos 보고서에서 SQL을 직접 작성할 때 사용할 프롬프트 관리자를 선택하는 방법

Cognos 보고서에서 SQL을 직접 설명하고 테이블에서 데이터를 검색하는 것이 가능하지만 SQL 자체에 매개 변수로 필터링하고 싶다면 promptmany를 사용할 것입니다.
이 promptmany를 사용하면, 기본적으로 필터가 필수가 되어 버리므로, 옵션으로 하는 방법을 공유합니다.

무슨 말을 하는지, 아래의 내용을 보고 받는 것이 빠르다고 생각하므로 읽어 주세요.

내용



다음과 같은 보고서를 작성하고 있습니다. 값 프롬프트는 데이터로 SALES_PERSON을 지정합니다.
매개 변수 이름으로 pSP라는 이름을 지정합니다.


목록의 데이터는 다음과 같이 SQL을 직접 작성하여 검색합니다.
이때 아래와 같이 promptmany로 필터를 걸고 있습니다.


보고서를 실행하면 다음과 같이 '데이터 없음'이 됩니다.
이것은 promptmany가 필수가 되어 버리고 있기 때문입니다.


프롬프트를 선택하면 표시할 수 있습니다.


필터를 옵션으로 설정하려면 다음과 같이 promprmany를 나열합니다.
select * from XXXXX.SALES where SALES_PERSON in #promptmany('pSP','',"'NoSelect'")# or 'NoSelect' = #promptmany('pSP','',"'NoSelect'")#


이렇게하면 선택적 필터로 인해 모든 데이터가 초기화됩니다.


매우 Specific한 내용입니다만, 실제의 프로젝트에서 곤란해 조사해 드디어 발견된 방법이므로, 어딘가에서 도움이 될지도 생각해 투고했습니다.

다중 선택의 경우 (2021/12/1 추가)



죄송합니다. 앞서 언급 한 방법이라면 여러 선택의 경우 오류가 발생했습니다.
복수 선택의 경우, 올바른 쓰는 방법은 이하군요.
()가 필요하고 = 대신 in입니다.
select * from XXXXX.SALES where SALES_PERSON in ( #promptmany('pSP','',"'NoSelect'")# ) or 'NoSelect' in ( #promptmany('pSP','',"'NoSelect'")# )

Like에서 복수 검색을 전후방 일치하고 싶은 경우(2021/12/6추기)



해보면 할 수 있었다는 수준에서 죄송합니다만, 일단 둡니다.
split의 구분 기호는 ','(쉼표 + 공백)이지만 DB2에서 테스트했기 때문일 수 있습니다. 사용하는 RDBMS측에서 SQL 캐치 해 단락 문자를 무엇으로 해야 하는지는 확인하는 것이 좋다.
select * from XXXXX.SALES where SALES_PERSON like #join('%'' or SALES_PERSON like  ''%',split(', ',sq(promptmany('pSP','token',"'NoSelect'",'%','','%'))))# or 'NoSelect' in ( #promptmany('pSP','',"'NoSelect'")# )

좋은 웹페이지 즐겨찾기