I have this query
x
SELECT to_char(timestamp_arr,'Dy DD/MM/YYYY') as timestamp_date
,to_char(timestamp_arr,'DD/MM/YYYY') as link_date
,count(transport_uid) as value
,decode (statut,'DETECTED','DETECTED','NO DETECTED') as label
FROM V_STAT_TRACKING v
WHERE timestamp_arr= '13/09/2019'
group by statut, timestamp_arr order by timestamp_arr, statut
And I got this result
timestamp_date link_date value statut
Ven. 13/09/2019 13/09/2019 1 DETECTED
Ven. 13/09/2019 13/09/2019 21 NO DETECTED
Instead of this I want to modify my query to get this result :
timestamp_date link_date DETECTED NO DETECTED
Ven. 13/09/2019 13/09/2019 1 21
They tell me about pivot function sql but I dont know how it works .
Thanks for helping
Advertisement
Answer
One option would be using pivot
keyword :
select *
from
( select to_char(timestamp_arr,'Dy DD/MM/YYYY','nls_date_language=French')
as "Timestamp Date",
to_char(timestamp_arr,'DD/MM/YYYY') as "Link Date",
transport_uid,
decode (statut,'DETECTED','DETECTED','NO DETECTED') as statut
from v_stat_tracking )
pivot
(
count(transport_uid) for statut
in ( 'DETECTED' as "Detected", 'NO DETECTED' as "No Detected" )
);