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