Doppio utilizzo della with in sql

martedì 09 febbraio 2010 - 09.28

trinity Profilo | Guru

salve ragazzi, io ho creato questa stored:

ALTER PROCEDURE [dbo].[GetRitardi_new] ( @data1 as Datetime, @data2 as Datetime ) AS BEGIN WITH alberghi_step1 AS ( SELECT alb.codalb, alb.descrizione, alb.codcomune, alb.Tel FROM dbo.albergo as alb JOIN dbo.Apertura_chiusura as Ap ON alb.Codalb=Ap.codalbergo and alb.CodComune=Ap.codcomune Where Ap.Datafineattivita='9999-01-01' and (datatemp1='9999-01-01' or (datatemp1 > @data1 and datatemp2>=@data2) or (datatemp1<=@data1 and datatemp2<@data2))and (data1='9999-01-01' or (data1 > @data1 and data2>=@data2) or (data1<=@data1 and data2<@data2)) and (data3='9999-01-01' or (data3 > @data1 and data4>=@data2) or (data3<=@data1 and data4<@data2)) and (data5='9999-01-01' or (data5 > @data1 and data6>=@data2) or (data5<=@data1 and data6<@data2)) and (data7='9999-01-01' or (data7 > @data1 and data8>=@data2) or (data7<=@data1 and data8<@data2)) ) SELECT A.Codalb,A.Descrizione,A.CodComune,A.Tel FROM alberghi_step1 A Except select Albergo.Codalb, Albergo.Descrizione, Albergo.CodComune, Albergo.Tel From dbo.Albergo Left JOIN dbo.Notifiche On Albergo.Codalb=Notifiche.codalbergo And Albergo.CodComune=Notifiche.codcomune Where Notifiche.data Between '16-03-2010' and '31-03-2010' END

e funziona perfettamente!
Ora io ho la seguente select:

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

questa select mi prende tutti i record della tabella alberghi e lì dove la dataupdate è compresa nel range di tempo indicato mi visualizza il valore altrimenti appare Null.
Io vorrei fare questo ossia prendere i record che escono dalla stored precendente, controllare la loro dataupdate e far visualizzare solo quelli che hanno dataupdate=Null oppure far visualizzare sia i record con la data che senza e poi li filtro direttamente dal compilatore vb con una semplice If.

Ora domanda banale per risolvere questo mio problema si può utilizzare una dobbia with... oppure si devono prendere i record della stored, salvarli in una tabella temporanea e su quest'ultima eseguire l'ultima select?

Potete darmi una mano?

Grazie mille
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