2016-09-15 5 views
1

같은 종류의 질문이 이전에 제기 된 것을 알고 있습니다. 그러나 나는 내가해야 할 일을 성공하지 못했습니다. 그러므로 나는 너에게 묻고있다.행을 일부 열로 바꿈

나는 client_ID 테이블과 각 클라이언트에 해당하는 다른 제품 카테고리를 구매할 가능성이 있습니다.

Client_ID | Prob_CategoryA | Prob_CategoryB | Prob_CategoryC 

    1     0.2     0.3     0.2 
    2     0.4     0.6     0.7 
    3     0.3     0.7     0.4 

이제 위의 표를 이렇게 변환하십시오.

Client_ID | Category Name | Probability 

    1    A    0.2 
    1    B    0.3 
    1    C    0.2 
    2    A    0.4 
    2    B    0.6 
    2    C    0.7 
    3    A    0.3 
    3    B    0.7 
    3    C    0.4 

당신에게 대단히 감사합니다

+0

가 프롬프트 응답 Jarlh 주셔서 대단히 감사합니다 UNION보다 빠르게 될 것입니다. 그러나 카테고리 유형을 어떻게 얻을 수 있을까요? 나는 각 범주에 기인 한 확률을 가지고 있습니다. 내 테이블에 범주 유형이 나열되어 있지 않습니다. 따라서 나는 이러한 유형을 검색 할 수있는 방법을 생각할 수 없습니다. 미리 감사드립니다 – Erdem

답변

2

간단한 UNPIVOT :

SELECT Client_Id, SUBSTRING(Cat, 14, 1) [Category Name], Probability 
FROM Src 
UNPIVOT (Probability FOR Cat IN (Prob_CategoryA, Prob_CategoryB, Prob_CategoryC)) UP 

결과

Client_Id Category Name Probability 
----------- ------------- ----------- 
1   A    0.2 
1   B    0.3 
1   C    0.2 
2   A    0.4 
2   B    0.6 
2   C    0.7 
3   A    0.3 
3   B    0.7 
3   C    0.4 
+0

대단히 감사합니다 파웰. 그것은 마치 마법처럼 작용했습니다. – Erdem

0

사용 UNPIVOT :

SELECT Client_ID, Cats, Probability 
FROM 
(SELECT Client_ID, Prob_CategoryA, Prob_CategoryB, Prob_CategoryC 
FROM yourTable) t 
UNPIVOT 
(Probability FOR Cats IN (Prob_CategoryA, Prob_CategoryB, Prob_CategoryC) 
) AS c 
0

Unpivot (다른 답변 참조) 외에 UNION도 있습니다.

select Client_ID, 'A' as [Category Name], Prob_CategoryA as Probability 
from yourtable 
UNION ALL 
select Client_ID, 'B', Prob_CategoryB 
from yourtable 
UNION ALL 
select Client_ID, 'C', Prob_CategoryC 
from yourtable; 

UNION은 중복 제거,하지만 데이터가 중복 UNION을 안 이후의 모든