2017-11-14 1 views
0

여러 행을 하나의 행으로 결합하고자합니다. 테이블 type여러 행을 하나의 행으로 결합하는 방법

표 룸

동적
room_id | room_name 
------------------- 
1  | room_A 
2  | room_B 
3  | room_C 

표 형식

type_id | type_name 
------------------- 
1  | type_I 
2  | type_II 
3  | type_II 
4  | type_IV 

테이블 가격

price_id | room_id | type_id | price 
------------------------------------ 
1  | 1 | 1 | 100 
2  | 1 | 2 | 150 
3  | 1 | 3 | 200 
4  | 1 | 4 | 250 
5  | 2 | 1 | 100 
6  | 2 | 2 | 200 
7  | 2 | 3 | 300 
8  | 2 | 4 | 400 
9  | 3 | 1 | 150 
10  | 3 | 2 | 250 
11  | 3 | 3 | 350 
12  | 3 | 4 | 450 

내가 원하는 것은이

같은 것입니다
 |     price 
room |--------------------------------------- 
     | type_I | type_II | type_III | type_IV 
----------------------------------------------- 
room_A | 100 | 150 | 200 | 250 
room_B | 100 | 200 | 300 | 400 
room_C | 150 | 250 | 350 | 450 
+0

필요합니다. 추가 태그보기. –

답변

1

는 희망이 당신을 도와,이 쿼리 : JOIN` 3 표, 다음 "피벗"`에

SELECT TR.Room_Name 
    ,MAX(CASE WHEN P.Type_ID=1 THEN Price END)type_I 
    ,MAX(CASE WHEN P.Type_ID=2 THEN Price END)type_II 
    ,MAX(CASE WHEN P.Type_ID=3 THEN Price END)type_III 
    ,MAX(CASE WHEN P.Type_ID=4 THEN Price END)type_IV 
FROM TABLE_PRICE P 
INNER JOIN TABLE_ROOM TR ON TR.Room_ID=P.Room_ID 
INNER JOIN TABLE_TYPE TT ON TT.Type_ID=P.Type_ID 
GROUP BY TR.Room_Name 
+0

나는 전에 그런 식으로 시도했지만, 원하는 것은 테이블 형식의 새로운 데이터를 추가하면 열을 자동으로 생성한다는 것입니다. –

+0

충분하지 않습니다 - 3 개의 테이블 모두 필요합니다. –

관련 문제