Non riesco a gestire un count nella mia select

giovedì 21 maggio 2009 - 10.29

trinity Profilo | Guru

Ragazzi sn settimane che ci sbatto la testa ma non trov una soluzione...
Il discorso è alquanto complesso quindi cercherò di essere il + preciso possibile e di postare tutto il necessario.

Allora partiamo con le tabelle, ecco di seguito codice ed esempio di dati:

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


ho messo i record al di sotto delle 25 camere...

ossia io devo prendere tutti gli alberghi per comune, vedere se sono inferiori a 25 camere e sommare il tutto ottenendo anche il numero di strutture al di sotto delle 25 camere.
Lo stesso per strutture tra 25 e 99 e poi superiore alle 100.
Nella select creo anche un codiceordinamento perchè poi mi serve in vb per il fine di una stampa....

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



CREATE TABLE [dbo].[comuni]( [id] [int] NOT NULL, [codcomune] [int] NOT NULL, [comune] [varchar](250) NULL, CONSTRAINT [PK_comuni] PRIMARY KEY CLUSTERED ( [id] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] Insert Into comuni (id,codcomune,comune)Values(1,60001,'Roma') Insert Into comuni (id,codcomune,comune)Values(2,60002,'Pisa') Insert Into comuni (id,codcomune,comune)Values(3,60003,'Latina')

Adesso io ho scritto questa stored:

ALTER PROCEDURE [dbo].[Chiusura_strutture_1_new] AS BEGIN SELECT tblTemp.codcomune, tblTemp.comune, tblTemp.CodiceOrdinamento, count(tblTemp.CodiceOrdinamento)as totstrutture, tblTemp.TotCamere, tblTemp.TotLetti, tblTemp.TotBagni FROM ( select alb.codcomune, c.comune, case when COUNT(cam.nrcamera)<25 then 1 when COUNT(cam.nrcamera) >=100 then 3 ELSE 2 END as CodiceOrdinamento, COUNT(cam.nrcamera) As TotCamere, isnull(sum(cam.nrletti)+sum(cam.nrlettiextra),'0') As TotLetti, isnull(Sum(cam.nrbagni),'0') As TotBagni From albergo as alb join dbo.comuni as c ON alb.codcomune=c.codcomune join anagrafica_camere as cam ON alb.codalb=cam.codalbergo group by alb.codcomune,c.comune ) AS tblTemp group by tblTemp.codcomune, tblTemp.comune, tblTemp.CodiceOrdinamento, tblTemp.totcamere, tblTemp.totletti, tblTemp.totbagni END

solo che il risultato del count sulla tabela tbltemp non è corretto.

il risultato corretto dovrebbe essere:

codicecomune comune codiceordinamento totstrutture totcamere totletti totbagni
60001 Roma 1 1 4 12 4
60002 Pisa 1 2 4 12 4
60003 Latina 1 1 1 3 1

Dov'è che nella stored sbaglioperchè il count della tabella tbltep non mi esegue la giusta somma dei record che che hanno lo stesso codiceordinamento (ovviamente per comune)

Ciao

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

tonyexpo Profilo | Senior Member



Ciao


se ho capito bene... questa è la tua select

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Antonio Esposito
MCTS .NET 3.5 WCF, .NET 2.0 Distributed applications
MCP .NET 3.5/2.0
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