sql group by 질문입니다.

sql group by 질문입니다.

QA

sql group by 질문입니다.

답변 3

본문

2180956234_1509631874.3612.png

 


           select 
             purchase.order_no,
         case 
           when count(request.order_no) = 1 
                then max(prod_name) 
                else max(prod_name) || ' 외 ' ||  count(request.order_no) -1 || ' 건'
                 end as title
            from purchase  
        join pay      on purchase.order_no = pqy.order_no
 left outer join request  on purchase.order_no = request.order_no 
 left outer join prod     on request.prod_no   = prod.prod_no 
 group by request.order_no, prod.prod_name 

 

제가 한 결과는 이렇게 나오네요

 

1001
1001
1001
1002
1003
1004
1005
1006

 

이것 때문에 집에 못가고 있습니다.

도움 부탁드립니다.

1001 

1002

1003

 

이 질문에 댓글 쓰기 :

답변 3


select a.order_no, concat(concat(concat(prod_name," 외"),count(prod_name))," 건") cnt
 from purchase a, request c, prod d
where a.order_no = c.order_no
    and c.prod_no = d.prod_no
group by order_no
;
 

 

중간에 pay는 혼란을 초래하는 구조라서, 

추출내용상 pay의 정보가 필요없어서 주석처리했습니다.

 

원하시는게 조건이 뭔지 모호하네요

 

잘못 기록한 SQL으로는

원하시는게 뭘까요?

 

단순히 

 

select distinct order_no는 아닌거 같은데

 

원하시는걸 글로 적어보시는게 어떨까요?

원하는 결과는
주문번호가
1001
1002
1003
이렇게 나오는 것인데

현재 쿼리 결과는
주문번호 1개에  상품이 여러개 있으니까 아래처럼 나옵니다.

1001 사과
1001 복숭아
1001 바나나


제가 원하는 결과는 아래와 같습니다.
1001 사과 외 2건
1004 복수아
1005 과일

죄송합니다..

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 92
© SIRSOFT
현재 페이지 제일 처음으로