2013-05-24 5 views
0

복잡한 문제가 있습니다. 피봇 팅 (pivoting)으로 해결할 수 있지만 어떻게 해야할지 잘 모릅니다.여러 열을 사용하여 피벗

데이터는 같이 보인다 :

------------------------------------------------------------------ 
| user_id | order_id | service | head | coordinatior | contract | 
------------------------------------------------------------------ 
| 1020 | 3  | 105  | 1 | 1   |  1 | 
| 364277 | 1  | 105  | 0 | 0   |  0 | 
| 364277 | 3  | 105  | 0 | 0   |  0 | 
| 367277 | 2  | 3763454 | 1 | 1   |  0 | 
| 1020 | 1  | 3764142 | 0 | 1   |  1 | 
| 1020 | 2  | 665443 | 0 | 1   |  1 | 
------------------------------------------------------------------ 

그리고 이것이 내가 순서에 따라이하고 싶은 방법입니다 지금


| user_id | service1 | head1 | coordinatior1 | contract1 | service2 | head2 | coordinatior2 | contract2 | service3 | head3 | coordinatior3 | contract3 | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------- 
| 1020 | 3764142 | 0 |  1  | 1  | 665443 | 0  |  1  | 1  | 105  | 1 |  1  | 1  | 
| 364227 | 105  | 0 |  0  | 0  | 3763454 | 1  |  1  | 0  | 105  | 0 |  0  | 0  | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------- 

나는 그것이 바와 같이 3 개 서비스를 표시 거대한 수평 스크롤바가되지만 user_id 당 최대 10 개의 서비스가있을 수 있습니다. 이는 일부 사용자가 4 개의 서비스를 가질 수 있음을 의미합니다.

이것은 내가 쿼리를 위해 가지고있는 것입니다.

SELECT user_id, service FROM table 
PIVOT (?) FOR order_id IN (0, 1, 2, 3 ,4 ,5 ,6, 7, 8, 9, 10)) 

나는 앞으로 나아갈 방법이 없습니다. 어떤 도움이 필요합니까? 사전에 감사

+1

가능한 중복이 대구를 select user_id ,max(case when order_id=1 then service end) as service_1 ,max(case when order_id=2 then service end) as service_2 from table
group by user_id
전자를 시도 :-), http://stackoverflow.com/questions/15674373/pivot- rows-to-columns-without-aggregate – Noel

답변

1

service_1,2..10이 같은

+0

감사합니다 ... 내 용도에 맞게 약간의 쿼리를 수정 한 후에 작동했습니다 :-) – Jaanna

관련 문제