Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Date consecutive e calcolo prezzi

32 views
Skip to first unread message

SM77

unread,
Apr 3, 2012, 6:35:47 AM4/3/12
to
Salve a tutti ho questa tabella:
ID_Stanza DATA IMPORTO
1 1/1/2012 100
1 2/1/2012 100
1 3/1/2012 100
1 4/1/2012 110
1 5/1/2012 115
2 2/1/2012 150
2 3/1/2012 120
2 4/1/2012 130
3 2/1/2012 110
3 5/1/2012 120

avrei bisogno di ottenere tutte le stanze disponibili in un range di
date con relativo costo totale.
ad esempio se volessi sapere le stanze libere dall'2/1/2012 al
4/1/2012 dovrei avere un risultato cosě
id_stanza totale
1 310
2 400

La stanza 3 non esce perché č disponibile solo il 2 e il 5, ma non c'č
nulla per il 3 e il 4.

Uso SQL Server 2005. Un grazie a chiunque mi aiuti.

giorgio rancati

unread,
Apr 7, 2012, 7:37:36 AM4/7/12
to

"SM77" <nob...@nobody.com> ha scritto nel messaggio
news:k4kln7ta1ob5nvdbg...@4ax.com...
Ciao,

se Id_Stanza + Data sono univoci, una soluzione potrebbe essere:
----
DECLARE @T Table (Id_Stanza Int,Data Datetime,Importo Money)

INSERT INTO @T
SELECT 1,'20120101',100 UNION ALL
SELECT 1,'20120102',100 UNION ALL
SELECT 1,'20120103',100 UNION ALL
SELECT 1,'20120104',110 UNION ALL
SELECT 1,'20120105',115 UNION ALL
SELECT 2,'20120102',150 UNION ALL
SELECT 2,'20120103',120 UNION ALL
SELECT 2,'20120104',130 UNION ALL
SELECT 3,'20120102',110 UNION ALL
SELECT 3,'20120105',120

DECLARE @Data_Da Datetime,
@Data_A Datetime

SELECT @Data_Da = '20120102',
@Data_A = '20120104'

SELECT Id_Stanza,Sum(Importo) AS Totale
FROM @T
WHERE Data BETWEEN @Data_Da AND @Data_A
GROUP BY Id_Stanza
HAVING Count(Data)=Datediff(d,@Data_Da,@Data_A)+1

/*
Risultato
Id_Stanza Totale
----------- ---------------------
1 310,00
2 400,00

(Righe interessate: 2)

*/
----

Ciao
Giorgio Rancati


SM77

unread,
Apr 10, 2012, 6:34:59 AM4/10/12
to
On Sat, 7 Apr 2012 13:37:36 +0200, "giorgio rancati"
<giorgio_No_Sp...@tiscali.it> wrote:

>
>"SM77" <nob...@nobody.com> ha scritto nel messaggio
>news:k4kln7ta1ob5nvdbg...@4ax.com...
>> Salve a tutti ho questa tabella:
>> ID_Stanza DATA IMPORTO
>> 1 1/1/2012 100
>> 1 2/1/2012 100
>> 1 3/1/2012 100
>> 1 4/1/2012 110
>> 1 5/1/2012 115
>> 2 2/1/2012 150
>> 2 3/1/2012 120
>> 2 4/1/2012 130
>> 3 2/1/2012 110
>> 3 5/1/2012 120
>>
>> avrei bisogno di ottenere tutte le stanze disponibili in un range di
>> date con relativo costo totale.
>> ad esempio se volessi sapere le stanze libere dall'2/1/2012 al
>> 4/1/2012 dovrei avere un risultato così
>> id_stanza totale
>> 1 310
>> 2 400
>>
>> La stanza 3 non esce perché è disponibile solo il 2 e il 5, ma non c'è
Grazie, è quello che cercavo.
Sei stato molto gentile.

Robby

unread,
Aug 29, 2012, 10:23:02 AM8/29/12
to
Ciao,

non sarebbe più conveniente avere una tabella con tutti i dati di una stanza ed una con le prenotazioni?

Stanze (id_stanza, prezzo, servizo_tv, bagno, ...)
Prenotazioni (id_prenotazione, id_stanza, dal, al)

Con una cosa del tipo:


select *
from Stanze
where id_stanza != (
select id_stanza
from prenotazioni
where data_arrivo between dal and al
where data_partenza between dal and al
order by id_stanza
)
0 new messages