2013-01-25 2 views
0

죄송합니다.이 문제는 너무 독특해서 더 나은 제목을 찾을 수 없었습니다.Sybase SQL : 최대 값 합계를 얻는 것

나는 다음과 같은 형식의 테이블이 있습니다 CAT1의 각 구별 값에 대한

--------EXAMPLE--------------------------------------------------------- 
Cat1   Cat2   Value 
a    e1   113 
b    e1   14 
a    e2   15 
c    e3   13 
a    e1   13 
a    e2   11 
c    e4   1 

을, 나는 CAT2별로 그룹화 값의 최대 값을 찾은 다음이를 요약하고 싶다.

그래서 CAT1 = 'A'

1 단계 위 테이블 :

Cat1   Cat2   Value 
a    e1   113 
a    e2   15 
a    e1   13 
a    e2   11 

단계 2 : I는 다음 행을 추출 할 내가 최대 CAT2 대응을 추출 할 :

Cat1   Cat2   Value 
a    e1   113 
a    e2   15 

3 단계 : 합계 값을 얻었다 : 0

Cat1   SumOfValueColumn 
a    128 
b    14 
c    14 

위 단계는 여러 단계로 수행 할 수 있지만 한 단계로 달성하고 싶습니다. Sybase를 사용하고 있습니다.

감사합니다.

답변

0

- 더 이상 데이터베이스 공간을 사용하지 않는보기를 만듭니다.

create view max_cat_tbl_view 
(Cat1, Cat2, Maxvalue) as 
select Cat1, Cat2, max(Value) 
from cat_tbl 
group by Cat1, Cat2 
go 

- 최대를 통해

select Cat1, sum(Maxvalue) from max_cat_tbl_view group by Cat1 order by Cat1 
go 

좋은 SQL, 좋은 밤을 합계를 얻기 위해 뷰를 쿼리합니다. kelley805

0

- 앞의 대답은 중간에 이동을 제거하여 한 단계로 완료되었을 수 있습니다. (값으로 CAT1, CAT2, 최대 (값)를 선택

SELECT CAT1, 합계 (값) sum_Value로 FROM - : - 다음은 쿼리 아래 사이베이스 임시 테이블을

select Cat1, Cat2, max(Value) Maxvalue 
into #max_cat_tbl 
from cat_tbl 
group by Cat1, Cat2 order by 1, 2 
select Cat1, sum(Maxvalue) from #max_cat_tbl group by Cat1 order by Cat1 
drop table #max_cat_tbl 
go 
0

사용하여 다른 답변입니다 FROM # tmp1 group by cat1, cat2) d1 GROUP BY cat1