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함수때문에 오류가 납니다
혹시 방법이 있을까요..?
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 ;