2014-04-21 1 views
0

고유 한 값이 아닌 하나의 ID 열에 값을 그룹화하기 위해 2와 12 사이의 값을 가진 2 열 임시 테이블을 반환하는 저장 프로 시저를 작성했습니다. 다른 열은 실제 데이터 값 열입니다. 이 1 열 테이블을 기본적으로 1 열 11 열, 각 열에 대해 1 열로 나누어서 테이블에 넣고 싶습니다.단일 열 결과 집합을 여러 열로 구문 분석 SQL

enter image description here

난이 ID에 의해 열로 파싱 가지고 싶습니다. 식별 컬럼은 고유 컬럼에 고유 할 것이므로 필요하지 않습니다. 뭔가가 좋아.

Data2  Data3  Data4 
102692... 103516.... 108408.... 
104114... 103476.... 108890.... 

등등. 나는 While 루프를 데이터 세트를 통해 사용하려고 시도했지만, 주로 삽입물에 포함되어있어 문제가된다. 나는이 주요 내가 해결 방법을 파악해야합니다 괜찮아요 그 달성이 아니라 경우 등

value2ID2, value2ID3 통해

While recordCount > 0 
    Begin 
     Insert into @tempTable(value1ID2,value1ID3,Value1ID4) 
    End 

다음 루프를 말하는 방법을 알아낼 수 없습니다 이유는 내가 날짜 그룹화를 결국 공유 할 꺾은 선형 차트의 보고서 작성기 데이터 집합을위한 것입니다.

+0

표현을, 그래서 MySQL의 태그를 제거 해요 : 이것은 당신이 각 id에 대해 여러 행을 반환 할 수 있습니다. –

+1

괜찮아요, 방금 SQL 태그를 가지고 있었지만, 그것은 mySQL을 제안했습니다, 그건 제 잘못입니다. 고마워요 –

+1

피벗을 사용해야합니다. – mhn

답변

1

문자열 값을 집계해야하므로 max 또는 min 집계 함수를 사용해야합니다. 문제는 각 열에 대해 단일 행을 반환한다는 것입니다. 여러 행을 다시 실행하려면 과 같은 창 함수를 사용하여 각 id/string 조합에 대해 고유 한 값을 생성해야합니다. tempTable` SQL Server를 의미 @`

select Data2 = [2], Data3 = [3], Data4 = [4] 
from 
(
    select id, stringvalue, 
     row_number() over(partition by id order by stringvalue) seq 
    from yourtable 
) d 
pivot 
(
    max(stringvalue) 
    for id in ([2], [3], [4]) 
) piv 
+0

도와 주셔서 감사합니다. 실제로이 답변을 받아 다른 게시물을 읽고 있었고,이 질문을 받으면이 쿼리를 사용하여 매우 도움이되었습니다. ! 다시 고마워 –

+0

이것은 항상 맥스에서 분까지 주문 하시겠습니까? 주위를 둘러 볼 방법이 있습니까? 집계가 사용되어야하는 것처럼 보이지 않습니다. 저장 한 날짜와 일치해야하는 시뮬레이션 된 값이므로이 값이 순서대로 필요합니다. –

+0

@NickG Pivot은 문자열에 대해 max 또는 min 중 하나의 집계 함수를 요구합니다.이 순서는'row_number()'순서에 의해 결정됩니다. 그것을 주문할 다른 가치가 있다면 그것을 사용할 수 있습니다. 모든 데이터를 보지 않고도 힘들지 만 날짜를 통해 생성 한 경우 나머지 데이터를 만들고 동시에 날짜순으로 행 번호를 만들 수 있습니다. – Taryn

관련 문제