2012-11-09 6 views
0

우리는 Crystal Reports와 잘 어울리는 ERP를 가지고 있습니다. 이제이 응용 프로그램을 통해 필터를 추가 할 수 있으며, 매개 변수가 아닌 보고서에 전달되지만 여하튼 WHERE 절에 추가됩니다.WHERE 절에 사용 된 SQL- 날짜?

문제는 날짜를 필터링 할 때 사용자가 선택한 기간 (보고서에이 날짜를 표시하려는 경우)을 결정할 수있는 방법이 보고서에 없습니다.

SQL을 통해이를 어떻게 보여줄지 궁금하십니까?

이중 테이블을 사용하여 거대한 날짜 목록을 선택한 다음이 날짜의 MIN 및 MAX를 사용하여 어떤 것이 선택되었는지 생각했습니다. 문제는 행을 많이 추가하지 않고 원래 쿼리에이 작업을 참여시킬 수 없다는 것입니다.

SELECT 
    MIN(DTE) MIN_DTE, 
    MAX(DTE) MAX_DTE 
FROM 
(
    SELECT 
    TRUNC(SYSDATE)-(5*365) + ROWNUM AS DTE 
    FROM 
    DUAL 
    CONNECT BY 
    ROWNUM <= (10*365) 
) 
WHERE 
    DTE >= '12-NOV-07' 
    AND DTE <= '12-DEC-07' 

을하지만 문제는 내가 행 계속을 화나게하지 않고 내 원래의 쿼리에 그 가입 방법을 작동하지 않을 수 있습니다 :

지금까지이있다.

다른 아이디어?

+1

데이터 집합이 반환되면 해당 데이터 집합을 만든 쿼리를 찾을 방법이 없습니다. 왜 사용자의 선택을 초기에 저장하지 않습니까? – ean5533

+1

아마도 보고서 패키지가 날짜를 매개 변수로 전달하는 저장 프로 시저에 쿼리를 만들 수 있습니다. 저장 프로 시저에서 매개 변수를 포함하여 여러 결과를 반환하는 것은 간단합니다. – wallyk

+0

아쉽게도 저장 프로 시저에서는 작동하지 않습니다. – Lock

답변

0

그 쿼리는 다른 행이없는 한 (아마도 어쩌면 자동 필터링이 하위 쿼리에서 작동하지 않는 것처럼) 한 행만 반환하므로 행 수를 전혀 화나게하지 않습니다.

그렇지 않으면이 예상대로 작동합니다 : 그것을 전부

SELECT q.*, max_min.* 
FROM (... put your original query here ...) q, 
    (... put the subquery that returns one row with max & min here ...) max_min 

합니다.

관련 문제