sql >> Databasteknik >  >> RDS >> Oracle

Hur gör man dynamisk pivot med datum och en annan kolumn i Oracle?

Du försöker konvertera 2 kolumner datum och identifierare så du behöver 2 pivoter. Försök nedanstående fråga, det borde fungera. Tveka inte att återkomma vid eventuella frågor. Detta fungerar i Oracle men inte säker på om du försöker i någon annan dbms.

select * from (
select * from (
with all_data as 
(select 'NAME1' fname, 123 value, 'ATR' identif, '01-OCT-2018' mydate from dual union all
select 'NAME1' fname, 333 value, 'QTDE' identif, '01-OCT-2018'  mydate from dual union all
select 'NAME2' fname, 212 value, 'ATR' identif, '01-AUG-2018'  mydate from dual union all
select 'NAME2' fname, 123 value, 'QTDE' identif, '01-AUG-2018'  mydate from dual union all
select 'NAME2' fname, 133 value, 'ATR' identif, '01-SEP-2018'  mydate from dual union all
select 'NAME2' fname, 123 value, 'QTDE' identif, '01-SEP-2018'  mydate from dual union all
select 'NAME3' fname, 678 value, 'ATR' identif, '01-AUG-2018'  mydate from dual union all
select 'NAME3' fname, 123 value, 'QTDE' identif, '01-AUG-2018'  mydate from dual )
select identif,fname,value,mydate from  all_data)
pivot 
(
sum(value)
for mydate in ('01-AUG-2018' as "AUG-2018",'01-SEP-2018' as "SEP-2018",'01-OCT-2018' as "OCT-2018")))
pivot
(
sum("AUG-2018") "08-2018"
,sum("SEP-2018") "09-2018"
,sum("OCT-2018") "10-2018"
for identif in ('ATR' ATR,'QTDE' QTDE))
order by 1;


  1. Lägg till dagar till ett datum i SQLite

  2. Hur man bulkinfogar bara nya rader i PostreSQL

  3. PHP-session + MySQL-resurs

  4. Skapa java.sql.blob-instans i lagrad java-procedur