2014-04-08 4 views
0

나는 다음과 같은 테이블이 있습니다오라클 SQL 쿼리 조합

site||kw||date 
M ||50||1-1-2013 
A ||60||1-1-2013 
... 

내가 보여줄 필요가, 두 날짜와 MAX_KW_TOTAL 사이 kw의 최대 값 MAX_KW_PERIOD되는 두 날짜

Site||avg(kw)||MAX_KW_PERIOD||MAX_KW_TOTAL 

사이에 필터링을 Kw의 최대 역사적 가치.

나는 통합 쿼리로 시도 :

SELECT Site, 
     avg(TM.kw) "AVG_KW", 
     MAX(TM.kwGen) "MAX KW PERIOD", 
     TO_NUMBER(NULL) "MAX_TOTAL" 
    FROM TABLE 
WHERE DATE BETWEEN DATE1 
       AND DATE2 
GROUP BY 
     Site 
UNION 
SELECT Site, 
     TO_NUMBER(NULL)"AVG_kW", 
     TO_NUMBER(NULL)"MAX KW PERIOD", 
     MAX(TM.kwGEN) "MAX TOTAL" 
    FROM TABLE 
GROUP BY 
     Site 

하지만 난 구하십시오

SITE||AVG_KW||MAX_KW PERIOD||MAX TOTAL 
    A||100 ||110   ||(null) 
    A||(null)||(null)  ||160 

을 내가

SITE||AVG_KW||MAX_KW PERIOD||MAX TOTAL 
    A||100 ||110   ||160 

덕분 같은 사이트에 대해 하나의 행을 취득 할 수있는 방법 제비.

+0

어떻게'JOIN' 대해를? – Alexander

+0

나는 그것이 JOIN과 함께 있다고 생각한다. 감사. – Madmartigan

답변

1

이 시도 :

with maxkw as 
((SELECT site, MAX(kw) maxtotal FROM tbl t GROUP BY SITE)), 

avgkw as 
(SELECT t.Site, 
     avg(kw) "AVG_KW", 
     MAX(kw) "MAX_KW_PERIOD"--, 
FROM tbl t 
WHERE DATE BETWEEN '20130101' AND '20130104' 
GROUP BY t.Site) 

select t.site, t.avg_kw, t.max_kw_period, c.maxtotal 
from avgkw t 
inner join maxkw c on t.site = c.site 
+0

필자는 이것을 시도하지만 반환 : "단일 행 하위 쿼리는 둘 이상의 행을 반환합니다" – Madmartigan

+0

내 대답이 업데이트되었습니다. –

+0

나는 그것이 JOIN과 함께 있다고 생각한다. 나는 너의 질문 shree.pat18을 시도 할 것이다 – Madmartigan