यदि आप Oracle 11g का उपयोग कर रहे हैं, तो आप PIVOT
. का उपयोग कर सकते हैं समारोह:
select *
from
(
select tkey, status,
status as col
from tableB b
left join tableA a
on a.fkey = b.fkey
) src
pivot
(
count(status)
for col in ('20' as Count_Status20,
'30' as Count_Status30,
'40' as Count_Status40)
) piv;
डेमो के साथ SQL Fiddle देखें
यदि आप Oracle11g का उपयोग नहीं कर रहे हैं, तो आप CASE
. के साथ एक समग्र फ़ंक्शन का उपयोग कर सकते हैं कथन:
select tkey,
count(case when status = 20 then 1 else null end) as Count_Status20,
count(case when status = 30 then 1 else null end) as Count_Status30,
count(case when status = 40 then 1 else null end) as Count_Status40
from tableB b
left join tableA a
on b.fkey = a.fkey
group by tkey
डेमो के साथ SQL Fiddle देखें