>

두 날짜 사이의 테이블에서 모든 레코드를 가져오고 싶습니다. "시작"및 "끝"날짜가 모두 null 인 경우 지난 7 일 동안의 데이터를 가져오고 싶습니다. 두 날짜 사이에 데이터를 성공적으로 제공하는 아래 쿼리를 작성했습니다. 두 날짜가 모두 null 인 경우 마지막 7 일 동안의 데이터 기본값을 얻으려면 어떻게합니까?

SELECT 
     COUNT(*), d.dd_value 
FROM audit_transaction t, 
     audit_master m, 
     dd_type_details d 
WHERE t.audit_id = m.audit_id 
    AND d.dd_id = m.process 
    AND m.activity_id = 9 
    AND t.iscompleted = 'completed' 
    AND audit_start_time BETWEEN '10/01/2018'::timestamp AND '10/17/2018'::timestamp 
GROUP BY d.dd_value

  • 답변 # 1

    조건부 WHERE 절을 사용하여이를 달성 할 수 있습니다.

    타임 스탬프가 null이면 오른쪽에있는 절을 건너 뜁니다. 타임 스탬프가있을 때만 검색하도록 쿼리를 발생시킵니다.

    AND (v_start_date IS NULL AND v_end_date IS NULL) OR audit_start_time BETWEEN v_start_date AND v_end_date
    
    

    추가 검사를 실행하여 반대의 작업을 수행하십시오. 즉, null 일 때만 건너 뜁니다.

    AND (NOT (v_start_date IS NULL AND v_end_date IS NULL)) OR audit_start_time BETWEEN now() AND now() - INTERVAL '7 days'
    
    

    편집 :저장 프로 시저의 컨텍스트에서 일부 변수가 v_start_date 및 v_end_date는 타임 스탬프 여야한다고 가정합니다.

  • 답변 # 2

    SELECT now (), now ()-INTERVAL '7 days ';

  • 답변 # 3

    COALESCE 사용  널값과 now() - INTERVAL '7 days' 를 확인하기 위해  원하는 결과를 얻을 수 있습니다.

관련 자료

  • 이전 unix - doc 및 docx 파일에서 일반 텍스트를 추출하는 방법은 무엇입니까?
  • 다음 scala - Maven 조립 Jar 파일에 src/main/resources/querytxt를 포함시키는 방법은 무엇입니까?