2013-11-28 1 views
0

MySQL을 처음 사용했습니다.MYSQL에서 여러 결과 세트 또는 문자열 배열을 반환하는 방법

여러 결과 집합을 반환하는 저장 프로 시저를 작성해야하고 Java에서이 값을 가져 오려고했습니다. 예를 들면. 테이블 트랜잭션이 있습니다.

select category ||' : '||sum(amount) 
from transaction 
where inc_eXP='Inclome' 
group by category; 

과 지출 범주에 따라 : 나는 종류에 따라 소득을 반환 절차가 필요

select category ||' : '||sum(amount) 
from transaction 
where inc_eXP='Exp' 
group by category; 

또는 선택적으로 또한 문자열 배열을 반환 할 수 있습니다.

제발 도와주세요.

답변

0

간단한 concatgroup_concat이 도움이되지 않습니까?

select group_concat(sum_as_string SEPARATOR '**') as final_string from(
select concat(category, ":", sum(amount)) as sum_as_string 
from transaction 
where inc_eXP='Inclome' 
group by category 
)as t; 

이 CAT1로 발생합니다 : 12000 * CAT2 : 34000 * CAT3 : 89,220. 사용자 집합을 사용할 수 있습니다. 희망이 하나 개의 결과 집합으로 모두 수입과 지출을 반환하는 대신

0

사용 조건 집계를하는 ​​데 도움이

샘플 출력
SELECT CONCAT(category, ' : ', SUM(CASE WHEN inc_exp = 'Income' THEN amount END)) income, 
     CONCAT(category, ' : ', SUM(CASE WHEN inc_exp = 'Exp' THEN amount END)) expenditure 
    FROM transaction 
GROUP BY category; 

:

 
|   INCOME | EXPENDITURE | 
|----------------|----------------| 
| category1 : 25 | category1 : 5 | 
| category2 : 20 | category2 : 20 | 

또는 이럴 깨끗한 방법는 카테고리 이름을 연결하지 않고있다 값을 가진

SELECT category, 
     SUM(CASE WHEN inc_exp = 'Income' THEN amount END) income, 
     SUM(CASE WHEN inc_exp = 'Exp' THEN amount END) expenditure 
    FROM transaction 
GROUP BY category; 

샘플 출력 : 여기

 
| CATEGORY | INCOME | EXPENDITURE | 
|-----------|--------|-------------| 
| category1 |  25 |   5 | 
| category2 |  20 |   20 | 

은 모두 SQLFiddle 데모

를 쿼리입니다
관련 문제