로우값들을 합치는 문제 질문입니다. group_concat 0 4 1,191

by 지침 [2016.11.28 11:45:22]


		select
				
				CONCAT(
					(
						CASE
						WHEN orders.type = '1' THEN 'OK'
						WHEN orders.type = '2' THEN 'FAIL'
						ELSE orders.type
						END
					)
				
				,'',
				CONCAT('(',count(orders.idx),')')
				) as tt
				from orders 
				inner join member ON(member.idx = orders.transIdx)
				where member.idx = '888'
				group by orders.type
		

 

쿼리를 실행하면 

tt

-------------

OK(50)

FAIL(22)

이렇게 여러 로우값이 나옵니다.

 

이 값들을  하나의 로우로 합치려고 

tt

-------------

OK(50) / FAIL(22)

group_concat 로 합쳐볼려고했지만 count함수와 group함수때문에 오류가 납니다

혹시 방법이 있을까요..?

 

 

by 마농 [2016.11.28 13:01:21]

"잘 안되는것 같습니다" 식의 모호한 질문으로는 해결방법 찾기 어렵습니다.

원본 자료와 원하시는 결과자료를 예를 들어 질문해 주세요.


by 지침 [2016.11.28 13:44:12]

죄송합니다.

글 다시 수정 했습니다. 


by 마농 [2016.11.28 14:02:34]

1. Member 테이블이 꼭 필요해 보이지는 않습니다.
2. 이중 Concat 은 한번만 써도 됩니다.
3. 최종 결과에 대한 Group_Concat 은 인라인뷰를 이용하면 됩니다.
4. Count(컬럼) 보다는 Count(*) 가 좋습니다.

SELECT GROUP_CONCAT(tt ORDER BY type SEPARATOR ' / ') tt
  FROM (SELECT type
             , CONCAT( CASE type WHEN '1' THEN 'OK'
                                 WHEN '2' THEN 'FAIL'
                                 ELSE type END
                     , '('
                     , COUNT(*)
                     , ')'
                     ) tt
          FROM orders
         WHERE transIdx = '888'
         GROUP BY type
        ) a
;

 


by 지침 [2016.11.28 14:21:10]

마농님 감사합니다. 

항상 좋은것들을 배워 갑니다. 

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