Gestione di una stored con all'interno una tabella temporanea

venerdì 14 settembre 2012 - 18.36
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio 2010  |  SQL Server 2008 R2

trinity Profilo | Guru

Ragazzi non vi sto a postare tutti i dati altrimenti sarebbe una marea di codice, vi posto la stored che ho scritto:

ALTER PROCEDURE [dbo].[Get_Arrivi_Partenze] ( @codicealbergo as Int, @data1 as smalldatetime, @data2 as smalldatetime ) AS BEGIN DECLARE @codalbergo INT DECLARE @nomestruttura varchar(100) DECLARE @data smalldatetime DECLARE @nmovimenti INT DECLARE @Comune varchar(100) DECLARE @Provincia varchar(100) DECLARE @Stato varchar(100) DECLARE @tipomov varchar(1) CREATE TABLE #tbmovimenti ( codicealbergo int, nomestruttura varchar(100), data_arrivo smalldatetime, arrivi int, comune_arrivo varchar(100), provincia_arrivo varchar(100), stato_arrivo varchar(100), data_partenza smalldatetime, partiti int, comune_partenza varchar(100), provincia_partenza varchar(100), stato_partenza varchar(100) ) DECLARE ShiftCursorValue CURSOR FOR Select codice_albergo, tab_alberghi.descrizione, data_arrivo as datamov, count(codice_albergo) as nrarrivi, comune_residenza_descrizione, provincia_residenza_descrizione, stato_residenza_descrizione, 'A' as tipomov from tab_alloggiati join tab_alberghi on codice_albergo=tab_alberghi.codice where codice_albergo=@codicealbergo and data_arrivo between @data1 and @data2 group by codice_albergo, tab_alberghi.descrizione, data_arrivo, comune_residenza_descrizione, provincia_residenza_descrizione, stato_residenza_descrizione union all Select codice_albergo, tab_alberghi.descrizione, data_partenza as datamov, count(codice_albergo) as npartiti, comune_residenza_descrizione, provincia_residenza_descrizione, stato_residenza_descrizione, 'P' as tipomov from tab_alloggiati join tab_alberghi on codice_albergo=tab_alberghi.codice where codice_albergo=@codicealbergo and data_partenza between @data1 and @data2 group by codice_albergo, tab_alberghi.descrizione, data_partenza, comune_residenza_descrizione, provincia_residenza_descrizione, stato_residenza_descrizione order by datamov OPEN ShiftCursorValue FETCH NEXT FROM ShiftCursorValue INTO @codalbergo,@nomestruttura,@data,@nmovimenti,@Comune,@Provincia,@Stato,@tipomov WHILE @@FETCH_STATUS = 0 BEGIN BEGIN IF @tipomov='A' INSERT INTO #tbmovimenti ( codicealbergo, nomestruttura, data_arrivo, arrivi, comune_arrivo, provincia_arrivo, stato_arrivo, data_partenza, partiti, comune_partenza, provincia_partenza, stato_partenza) VALUES (@codalbergo,@nomestruttura,@data,@nmovimenti,@Comune,@Provincia,@Stato,'','0','','','') IF @tipomov='P' INSERT INTO #tbmovimenti ( codicealbergo, nomestruttura, data_arrivo, arrivi, comune_arrivo, provincia_arrivo, stato_arrivo, data_partenza, partiti, comune_partenza, provincia_partenza, stato_partenza) VALUES (@codalbergo,@nomestruttura,'','0','','','',@data,@nmovimenti,@Comune,@Provincia,@Stato) END FETCH NEXT FROM ShiftCursorValue INTO @codalbergo,@nomestruttura,@data,@nmovimenti,@Comune,@Provincia,@Stato,@tipomov END CLOSE ShiftCursorValue DEALLOCATE ShiftCursorValue select * from #tbmovimenti END

e l'immagine del result


1095x257 137Kb


dato che questo risultato deve essere passato ad un list collection che a sua volta deve essere passato ad un report, vorrei che i movimenti delle partenze fossero allineanti sulla stessa riga degli arrivi..calcolate che a volte può succedere che le righe delle partenze siano superiori di numero a quelle degli arrivi o viceversa....

sapete consigliarmi qualcosa oppure modificare il codice sql che ho postato per rendere fattibile il mio risultato?

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

dupperelko Profilo | Junior Member

Ciao,
ma intendi che la colonna Arrivi la vuoi affiancata alla colonna Partiti?
Ciao

trinity Profilo | Guru

Diciamo il contrario che i partiti vengono affiancati alla colonna arrivi...nel senso cerco di simulare un result

codicealbergo nrarrvi data comune npartiti data comune
1 1 01/09/2012 Latina 2 02/09/2012 Latina
1 1 05/09/2012 Terracina 3 03/09/2012 Roma
1 Terracina 1 12/09/2012 Terracina


Allora può succedere che ci siano + partiti che arrivi come nell'esempio o addirittura solo arrivi o solo partiti, oppure ci possono essere anche partiti che hanno i loro arrivi in un altro periodo come nell'esempio

Spero di essere stato abbastanza chiaro

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

dupperelko Profilo | Junior Member

Se vuoi solo invertire l'ordine di visualizzazione delle colonne, basta invertire l'ordine nelle estrazioni della tua query...
ciao

trinity Profilo | Guru

No se vedi nell'immagine postata non ci devono essere i campi vuoi tutti i movimenti sia arrivi che le partenze(se ci sono) devo partire sullo stesso rigo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5