Stored con creazione ed inserimento dati in una tabella temporanea

venerdì 30 novembre 2007 - 17.04

trinity Profilo | Guru

Salve ragazzi,
ho creato la seguente stored:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

mi funziona benissimo e come risultato mi esce per esempio quanto segue:

TIPOMOV MOVIMENTI STATO
ITALIANI 5 A
ITALIANI 1 P
STRANIERI 2 A
STRANIERI 1 P

Io invece vorrei che uscisse un solo record come in questo esempio:

ARRIVI-ITA PARTENZA-ITA ARRIVI-STR PARTENZE-STR
5 1 2 1


Stavo pensavo che dopo tutte le select potevo creare una tabella temporanea ed inserirci i dati derivanto dalle stesse selct.
E qui mi sono fermato perchè:

1 - creare una tabella temporanea so farlo ma nel mio caso non saprei come poi associare i dati alle rispettive colonne anche perchè bisogna tener presenta la distinzione tra movimenti italiani e stranieri e poi successivamente tra arrivati e partiti.

Spero di essere stato abbastanza chiaro.

Un salutone Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>mi funziona benissimo e come risultato mi esce per esempio quanto
>segue:
>
>TIPOMOV MOVIMENTI STATO
>ITALIANI 5 A
>ITALIANI 1 P
>STRANIERI 2 A
>STRANIERI 1 P
>
>Io invece vorrei che uscisse un solo record come in questo esempio:
>
>ARRIVI-ITA PARTENZA-ITA ARRIVI-STR PARTENZE-STR
>5 1 2
>1

Ciao Fabio,

Si tratta di una query crosstab (chiamata anche PIVOT o a campi incrociati).
Che versione di SQL Server utilizzi? Con SQL Server 2005 sono stati introdotti nuovi operatori PIVOT e UNPIVOT appositamente per questo genere di query, mentre con le edizioni precedenti ti devi un po' ingegnare

>Stavo pensavo che dopo tutte le select potevo creare una tabella
>temporanea ed inserirci i dati derivanto dalle stesse selct.
Ma no, racchiudi quella mega query (che secondo me può essere scritta meglio ma non conosendo il dettaglio preferisco glissare ) in una UDF table-valued e costruisci su questa UDF la query crosstab.

>Un salutone Ciao
Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

>Che versione di SQL Server utilizzi?

si utilizzo sql server 2005
>Ma no, racchiudi quella mega query (che secondo me può essere
>scritta meglio ma non conosendo il dettaglio preferisco glissare
>) in una UDF table-valued e costruisci su questa UDF la query
>crosstab.
Non l'ho mai fatta mi puoi dare una mano?

cmq ecco la struttura della tabella su cui faccio la mega select. Semmai puoi vedere se si può scrivere meglio la stored.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


>>Un salutone Ciao
>Ciao!
>
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>si utilizzo sql server 2005
Ottimo.

>Non l'ho mai fatta mi puoi dare una mano?
Inizia a leggere i Books Online, guarda come si creano, smanetta qualche oretta e se avrai problemi specifici vedremo di risolverli
Una volta creata la UDF passa all'operatore PIVOT.

>cmq ecco la struttura della tabella su cui faccio la mega select.
>Semmai puoi vedere se si può scrivere meglio la stored.
No, troppo difficile

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

sIo ho creato questa:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

sto fuori tema in base a ciò che serve a me?

Qualora fosse giusta la strada che ho intrapreso, mi dicevi di eseguire una query crosstab su questa funzione.

Questa query crosstab devo inserirla in una stored che mi permette di ricavare i dati che mi servono?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>sIo ho creato questa:
<SNIP>
>sto fuori tema in base a ciò che serve a me?
No, è perfetta

>Qualora fosse giusta la strada che ho intrapreso, mi dicevi di
>eseguire una query crosstab su questa funzione.
Esatto.

>Questa query crosstab devo inserirla in una stored che mi permette
>di ricavare i dati che mi servono?
Potrebbe essere una idea in modo da avere una interfaccia semplice da esporre ai clients
Ora sotto a studiare l'operatore PIVOT

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Ho visto molti esempi su internet ma non riesco proprio ad applicare l'operatore pivot nel mio caso, puoi aiutarmi? ti prego.

Poi una cosa se eseguo semplicemente la function come ho creato e postato nel precedente post.
Il risultato è tutto zero. Strano!

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5