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:
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....
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