2016-09-19 3 views
1

내 데이터베이스에 테이블이 같이 들어가 :SQL 문은

 
ID | VARIANT | SIFRANT | VALUE 

내가

SELECT * FROM example_table 

내가 독자적으로 각 행을 얻을 호출 할 때 . 그러나 내 데이터베이스의 레코드는 동일한 VARIANT 일 수 있습니다. 그리고 그 기록들을 같은 줄에 출력하고 싶습니다. 예를 들어 가 나는 경우

 
ID | VARIANT | SIFRANT | VALUE 
1 | 3  | 5  | 50 
2 | 3  | 6  | 49 
3 | 3  | 1  | 68 

내가

 
VARIANT | VALUES_5 | VALUES_6 | VALUES_1 
3  | 50  | 49  | 68 

EDIT로 출력을하고 싶습니다 : 나는 PIVOT을 사용하여 솔루션을 발견, 코드는 다음과 같이 진행됩니다

select * 
from (
    select variant, VALUE, SIFRANT 
    from example_table 
) 
pivot 
(
    max(VALUE) 
    for SIFRANT 
    in ('1','2','3','4','5','6','7','8','9','10') 
) 
+0

이에 대한 일반적인 용어 그룹 병합이라고합니다 - 최소한의 MySQL의 GROUP_CONTACT으로가는() 함수 ... 난 정말이 사용자 지정 논리를 통해 처리되어야하는 SQL 서버에서 (그렇게 확신하지 당량을 오라클을 사용하지 않는, 아무것도 없다 내장하지만, 용어가 몇 가지 방향을 제시 할 수 이상) – jleach

+0

는 여기를 참조하십시오 http://stackoverflow.com/questions/16771086/is-there-any-function-in-oracle-similar-to-group-concat- 의 - MySQL의 – jleach

답변

4

with test(ID, VARIANT, SIFRANT, VALUE) as 
(
    select 1, 3, 5, 50 from dual union all 
    select 2, 3, 6, 49 from dual union all 
    select 3, 3, 1, 68 from dual 
) 
select variant, listagg (value, ' ') within group (order by id) 
from test 
group by variant 
: 당신은 당신의 데이터 집계가 필요하다는 것