Metodo Group By in una stored

mercoledì 12 settembre 2007 - 08.59

trinity Profilo | Guru

Salve ragazzi,
io sql ho creato una stored del genere:

ALTER PROCEDURE [dbo].[Print_rilevazione] ( @Codalbergo Int, @CodComAlb Int, @DallaData smalldatetime, @AllaData smalldatetime ) AS BEGIN SELECT Codalbergo,CodComAlb,data_elaborazione,stato,ncomp,codstato FROM dbo.Archivio_mov WHERE codalbergo=@Codalbergo And CodComAlb=@CodComAlb And data_elaborazione BETWEEN @DallaData AND @AllaData ORDER BY data_elaborazione END

il risultato che mi genera è il seguente (vedi immagine):

418x449 58Kb


i dati che escono per me sono corretti ma vorrei fare una cosa del genere, con un codice sql e semmai utilizzando il group by è possibile raggruppare le righe per data_elaborazione,stato e codstato e nel campo ncomp ottenere la somma dei campi ncomp che fanno parte diel gruppo creato?

esempio

noi abbiamo i primi 5 record (vedi immagine) così:
5 60006 2007-08-01 00:00:00 P 1 0
5 60006 2007-08-01 00:00:00 P 1 0
5 60006 2007-08-01 00:00:00 P 1 0
5 60006 2007-08-01 00:00:00 A 1 0
5 60006 2007-08-01 00:00:00 A 1 0

io vorrei che uscisse così:

5 60006 2007-08-01 00:00:00 P 3 0
5 60006 2007-08-01 00:00:00 A 2 0


si può fare e se si come?

Ciao e grazie



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

alx_81 Profilo | Guru

>Salve ragazzi,
>io sql ho creato una stored del genere:
>
>i dati che escono per me sono corretti ma vorrei fare una cosa
>del genere, con un codice sql e semmai utilizzando il group by
>è possibile raggruppare le righe per data_elaborazione,stato
>e codstato e nel campo ncomp ottenere la somma dei campi ncomp
>che fanno parte diel gruppo creato?
>
>esempio
>
>noi abbiamo i primi 5 record (vedi immagine) così:
>5 60006 2007-08-01 00:00:00 P 1 0
>5 60006 2007-08-01 00:00:00 P 1 0
>5 60006 2007-08-01 00:00:00 P 1 0
>5 60006 2007-08-01 00:00:00 A 1 0
>5 60006 2007-08-01 00:00:00 A 1 0
>
>io vorrei che uscisse così:
>
>5 60006 2007-08-01 00:00:00 P 3 0
>5 60006 2007-08-01 00:00:00 A 2 0
>
>
>si può fare e se si come?
Come hai detto tu . Group by più una sum per sommare..

USE tempdb; GO CREATE TABLE TempArchivio_mov ( IDAlbergo int identity(1,1), CodAlbergo int NOT NULL, Data_Elaborazione smalldatetime NOT NULL, CodComAlb int NOT NULL, Stato char(1) NOT NULL, NComp smallint NOT NULL, CodStato tinyint NOT NULL ) GO INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'P', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'P', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'P', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'P', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'P', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'A', 1, 0 INSERT TempArchivio_mov (CodAlbergo, CodComAlb, Data_Elaborazione, Stato, NComp, CodStato) SELECT 5, 60006, '20070801', 'A', 1, 0 GO IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('TempPrint_rilevazione')) DROP PROCEDURE TempPrint_rilevazione GO CREATE PROCEDURE TempPrint_rilevazione @Codalbergo Int, @CodComAlb Int, @DallaData smalldatetime, @AllaData smalldatetime AS BEGIN SET NOCOUNT ON; SELECT Codalbergo , CodComAlb , data_elaborazione , stato , ncomp = SUM(ncomp) , codstato FROM TempArchivio_mov WHERE codalbergo=@Codalbergo And CodComAlb=@CodComAlb And data_elaborazione BETWEEN @DallaData AND @AllaData GROUP BY Codalbergo , CodComAlb , data_elaborazione , stato , codstato ORDER BY data_elaborazione END GO EXEC TempPrint_rilevazione 5, 60006, '20070801', '20070801' GO -- pulizia DROP PROCEDURE TempPrint_rilevazione DROP TABLE TempArchivio_mov GO
>
>Ciao e grazie
di nulla!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

trinity Profilo | Guru

risolto tutto grazie per l'aiuto

ciao
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5