
방법1
select order_no,
case
when cnt=1 then prod_name
else prod_name || ' 외 ' || cnt-1 || '건'
end as title
from
(select x.order_no, z.prod_name, x.cnt
from
(select purchase.order_no as order_no, count(*) as cnt
from purchase, request, prod
where purchase.order_no=request.order_no
and request.prod_no=prod.prod_no
group by purchase.order_no
order by order_no) x,
(select distinct on (order_no) order_no as order_no, prod_no from request) y, prod z
where x.order_no=y.order_no
and y.prod_no=z.prod_no) a;
방법2
select v1.*, v2.*
from
(select a.order_no,
max(a.prod_no) as prod_no,
(select b.prod_name from prod b where b.prod_no = max(a.prod_no)) as prod_name
from request a
group by a.order_no) v1,
(select c.order_no, count(*)-1 as count
from request c join prod d
on c.order_no = d.prod_no
group by c.order_no) v2
where v1.order_no = v2.order_no
방법3
select
order_no,
case when count=0 then prod_name else prod_name ||' 외' || count || ' 건' end as title
from (
select v1.order_no,v1.prod_name,v2.count
from
(select a.order_no,
max(a.prod_no) as prod_no,
(select b.prod_name from prod b where b.prod_no = max(a.prod_no)) as prod_name
from request a
group by a.order_no) v1,
(select c.order_no, count(*)-1 as count
from request c join prod d
on c.prod_no = d.prod_no
group by c.order_no) v2
where v1.order_no = v2.order_no
) as v3;
관련 :