ROW가 한줄로 나와야 하는데 안되네요. 0 3 2,019

by lover [Oracle 기초] 크로스탭 . 아우터조인 [2015.05.14 10:08:14]


아래와 같이 결과를 나오게 해야 하는데

주문.차량번호  주문.기사명         차량.기사명1   차량.기사명2  차량.기사명3

==============================================================================

10가1234  홍길동                       홍길동         강감찬      김세종

 

 

지금은 아래와 같이 나오고 있네요..

주문.차량번호  주문.기사명         차량.기사명1   차량.기사명2  차량.기사명3

==============================================================================

10가1234  홍길동                     홍길동   
10가1234  홍길동                                             강감찬    
10가1234  홍길동                                                                     김세종

 


즉...주문테이블에 있는 차량번호 10가1234에 해당하는 차량기사명  1, 2, 3 을 한 ROW에 가져와서
화면에 뿌려야 하네요.

 

 

현재 쿼리는 이렇습니다.


SELECT 주문.차량번호  주문.기사명         decode(rownum,1,차량.기사명1),   decode(rownum,2,차량.기사명2),  decode(rownum,3,차량.기사명3)
FROM 주문, 차량
WHERE 주문.차량번호 = 차량.차량번호(+)


한줄로 가져오게 하려고 이렇게 해보려고 했는데 아닌가 봅니다...;;


어떤 부분을 고쳐야 하는지 조언해 주시면 감사드리겠습니다.(꾸벅)

 

 

by 창조의날개 [2015.05.14 10:31:26]

1. 차량 테이블에 기사명이 기사명1, 기사명2, 기사명3으로 분리 되어 있나요?

   혹시 차량번호, 기사명으로 컬럼이 2개만 있지 않나요?

2. 기사명은 최대 3개 뿐인가요?

 

1
2
3
4
5
SELECT 주문.차량번호,  주문.기사명, MAX(decode(rownum,1,차량.기사명1)), MAX(decode(rownum,2,차량.기사명2)), MAX(decode(rownum,3,차량.기사명3))
FROM 주문, 차량
WHERE 주문.차량번호 = 차량.차량번호(+)
GROUP BY 주문.차량번호,  주문.기사명
;

 


by lover [2015.05.14 10:53:53]

1. 차량 테이블에 기사명이 기사명1, 기사명2, 기사명3으로 분리 되어 있나요?

   혹시 차량번호, 기사명으로 컬럼이 2개만 있지 않나요?

  --> 맞습니다. 차량번호 기사명 컬럼만 있습니다.

2. 기사명은 최대 3개 뿐인가요?

  --> 차량번호에 따라 기사명은 1개에서 여러개까지 임의로 될 수 있습니다.

 

감사드립니다.


by 창조의날개 [2015.05.14 11:26:11]

기사명이 여러명으로 가변적이라면 가로로 만들때 몇개 까지 만들어야 할지 알 수 없습니다.

그래서 보통 최대 값을 잡아줍니다.

 

또는 구분자를 주어 문자열로 합쳐서 SELECT 하고 나머지는 프로그램에서 처리 하기도 합니다.

 

일단 위 쿼리로 했을 때 원하는 결과는 나오나요?

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입