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

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개 뿐인가요?

 

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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입