Query access in SQL

lunedì 20 marzo 2006 - 10.41

ciccio81 Profilo | Newbie

Ciao a tutti, domanda un pochino difficile.

Devo riportare un report che è gia stato fatto su un database access su uno oracle.

Il problema è che in access per la query è stata utilizzata la funzione transform ..... pivot, come faccio a farla in sql per oracle? qulacuno mi aiuta o sa dove posso reperire informazioni?
Grazie.

La query è circa cosi:

TRANSFORM Sum(CampiConcGiorn.Netto) AS produzione
SELECT Concessioni.Concessione, Concessioni.Operatore, Year([Data]) AS ANNO, Sum([PRODUZIONE]) AS TOTALE
FROM Concessioni INNER JOIN ((Campi INNER JOIN CampiConcess ON Campi.IdCampo = CampiConcess.IdCampo) INNER JOIN CampiConcGiorn ON Campi.IdCampo = CampiConcGiorn.IdCampo) ON (Concessioni.IdConcessione = CampiConcGiorn.IdConcessione) AND (Concessioni.IdConcessione = CampiConcess.IdConcessione)
WHERE (((Month([Data]))<>Month(Now())) AND ((CampiConcGiorn.Operatore)="spi"))
GROUP BY Concessioni.Concessione, Concessioni.Operatore, Year([Data]), Concessioni.Operatore
PIVOT Month([Data]) In (1,2,3,4,5,6,7,8,9,10,11,12);

lbenaglia Profilo | Guru

>Devo riportare un report che è gia stato fatto su un database
>access su uno oracle.
>
>Il problema è che in access per la query è stata utilizzata la
>funzione transform ..... pivot, come faccio a farla in sql per
>oracle? qulacuno mi aiuta o sa dove posso reperire informazioni?

Ciao ciccio81,

ti preannuncio che non conosco Oracle, ma da quel poco che ho visto con Google questo DBMS non supporta degli operatori nativi per generare query cross-tab.
Lo stesso problema era presente nelle edizioni di SQL Server antecedenti alla versione 2005 ed in questi casi si utilizzava una tecnica basata sulla funzione di aggregazione MAX() e la funzione CASE.
Dato che il numero di colonne della tua query è statico (coincide con i 12 mesi dell'anno) non dovresti avere alcun problema a riprodurla con la tecnica che ti ho appena segnalato.
Per un esempio ti segnalo il seguente link:
http://www.adp-gmbh.ch/ora/sql/examples/pivot.html

>Grazie.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5