>non sara elagante ma se quella select la fai diventare una vista...
>poi il campo dataupdate c'è e quindi la where diventa facile
>.. oppure ti crei una tab temporanea su cui fai la select ...
Non trovo che questa soluzione sia inelegante. Anzi..
Diciamo che puoi evitare la vista usando una bella CTE:
;WITH AlbergoUpdate (CodStruttura, Codcomune, NomeStruttura, Telefono, DataUpdate)
AS
(
SELECT
CodStruttura
, Codcomune
, NomeStruttura
, Telefono
, DataUpdate =
(
SELECT MAX(
CASE
WHEN DataArrivo>= IsNull(DataPartenza,'19000101') THEN DataArrivo
ELSE DataPartenza
END)
FROM dbo.Archivio_mov_new
Where codalbergo=Albergo.CodStruttura
and codcomalbergo=Albergo.codcomune
and dataarrivo between @data1 and @data2
and IsNull(DataPartenza,'19000101') <= @data2
and DataUpdate Is Null
)
FROM Albergo
)
SELECT
CodStruttura
, Codcomune
, NomeStruttura
, Telefono
, DataUpdate
FROM
AlbergoUpdate
WHERE
DataUpdate IS NULL
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi