몇 가지 숫자를 얻고 싶고 그 합계는 Day-7> 0과 Day-14> 0 및 Day-21> 0 사이의 타임 라인 사이에 0보다 커야합니다. 3 개의 SQL 문을 하나의 단일 호출로 더 효율적으로 결합하는 방법이 있는지 알아 내려고합니다.
SELECT DISTINCT NUMBER FROM (
SELECT NUMBER,SUM(DATA) DATA
FROM TABLEA
WHERE
DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-7,'YYYYMMDD'))
GROUP BY VF_NUMBER
HAVING SUM(DATA) > 0
AND
SELECT NUMBER,SUM(DATA) DATA
FROM TABLEA
WHERE
DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-14,'YYYYMMDD'))
GROUP BY VF_NUMBER
HAVING SUM(DATA) > 0
AND
SELECT NUMBER,SUM(DATA) DATA
FROM TABLEA
WHERE
DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-21,'YYYYMMDD'))
GROUP BY VF_NUMBER
HAVING SUM(DATA) > 0
)
실제로> 7,> 14,> 21 => 7 그렇지 않습니까?
다음이 작동합니다.
OP의 의견에 따라 응답을 수정했습니다.
SELECT VF_NUMBER
FROM
(SELECT VF_NUMBER,
SUM(CASE WHEN DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-7,'YYYYMMDD')) THEN DATA ELSE 0 END) GREATER_7,
SUM(CASE WHEN DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-14,'YYYYMMDD')) THEN DATA ELSE 0 END) GREATER_14,
SUM(CASE WHEN DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-21,'YYYYMMDD')) THEN DATA ELSE 0 END) GREATER_21,
NUMBER,SUM(DATA) DATA
FROM TABLEA
WHERE DATEID >= TO_NUMBER(TO_CHAR(SYSDATE-7,'YYYYMMDD'))
GROUP BY VF_NUMBER)
WHERE GREATER_7>0
AND GREATER_14>0
AND GREATER_21>0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다