begin process at 2012 02 11 18:10:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

Taux occupation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Taux occupation

mardi 9 septembre 2008 à 11:31:30 | Taux occupation

citt

Bonjour,

Je voudrait savoir comment réaliser une requete me donnant le taux d'occupation de chambres.
Voici ma table :

[code]
CREATE TABLE [dbo].[reservation] (
    [Id] [int] IDENTITY (1, 1) NOT NULL ,
    [id_chambre] [int] NULL ,
    [dt_deb] [datetime] NULL ,
    [dt_fin] [datetime] NULL
) ON [PRIMARY]
GO
[/code]

et voici les données :

[code]
INSERT INTO reservation(id_chambre, dt_deb, dt_fin) VALUES(1, '2008-08-01', '2008-08-05');
INSERT INTO reservation(id_chambre, dt_deb, dt_fin) VALUES(1, '2008-08-06', '2008-08-15');
INSERT INTO reservation(id_chambre, dt_deb, dt_fin) VALUES(1, '2008-08-16', '2008-08-30');
INSERT INTO reservation(id_chambre, dt_deb, dt_fin) VALUES(2, '2008-07-25', '2008-09-30');
INSERT INTO reservation(id_chambre, dt_deb, dt_fin) VALUES(3, '2008-08-05', '2008-09-30');
[/code]

Et la je voudrait connaitre le taux d'occupation pour le mois 08, j'ai creer une requete pour le moment mais elle n'arrive pas a prendre en compte pour la chambre ayant l'id 2 qu le taux d'occupation est a 100%

Qq a deja eut ca a faire ?

Merci d'avance,

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
[ Lien ]
mardi 9 septembre 2008 à 14:09:04 | Re : Taux occupation

crn_c21

Peux tu écrire ta requète!!
mardi 9 septembre 2008 à 14:31:27 | Re : Taux occupation

citt

Voici le début de ma requête :
SELECT SUM((DATEDIFF("d", Dt_Deb, Dt_Fin)+1)), id_chambre
FROM reservation
WHERE ((Dt_Deb > convert(datetime, '2008-08-01') AND (Dt_Deb < convert(datetime, '2008-08-30') OR Dt_Fin < convert(datetime, '2008-08-30'))) OR
       (convert(datetime, '2008-08-01') > Dt_Deb AND (convert(datetime, '2008-08-01') < Dt_Fin OR convert(datetime, '2008-08-30') < Dt_Fin)) OR
       (Dt_Deb = convert(datetime, '2008-08-01') AND (Dt_Fin IS NOT NULL AND convert(datetime, '2008-08-30') IS NOT NULL)))
GROUP BY id_chambre

Elle me permet de récupérer le nombre de jour d'occupation, mais elle prend en compte trop de valeur !!



Citt_jr
Bats toi avec les meilleurs, crève avec le reste
[ Lien ]
vendredi 12 septembre 2008 à 09:57:56 | Re : Taux occupation

citt

Réponse acceptée !
Voila j'ai trouvé la solution :

DECLARE @Dt_Deb_Month AS datetime;
DECLARE @Dt_Fin_Month AS datetime;

SET @Dt_Deb_Month = convert(datetime, '2008-08-01');
SET @Dt_Fin_Month = DateAdd ("d", -1 ,DateAdd ("m", 1 ,@Dt_Deb_Month));

DECLARE @Nb_Jours_Mois AS integer;

SET @Nb_Jours_Mois = DateDiff("d", @Dt_Deb_Month , DateAdd ("m", 1 , @Dt_Deb_Month))

-- Donne le premier jour du mois, le dernier et le nombre de jour du mois
SELECT @Dt_Deb_Month, @Dt_Fin_Month, @Nb_Jours_Mois


SELECT
SUM( CASE WHEN Dt_Deb >= @Dt_Deb_Month AND Dt_FIn <= @Dt_Fin_Month THEN (DATEDIFF("d", Dt_Deb, Dt_Fin)+1)
    WHEN Dt_Deb < @Dt_Deb_Month AND Dt_FIn <= @Dt_Fin_Month THEN (DATEDIFF("d", @Dt_Deb_Month, Dt_Fin)+1)
    WHEN Dt_Deb >= @Dt_Deb_Month AND Dt_FIn > @Dt_Fin_Month THEN (DATEDIFF("d", Dt_Deb, @Dt_Fin_Month)+1)
    WHEN Dt_Deb < @Dt_Deb_Month AND Dt_FIn > @Dt_Fin_Month THEN @Nb_Jours_Mois
END) as Nb_Jours, id_chambre

FROM reservation

WHERE  ((Dt_Deb > @Dt_Deb_Month AND (Dt_Deb < @Dt_Fin_Month OR Dt_Fin < @Dt_Fin_Month)) OR
       (@Dt_Deb_Month > Dt_Deb AND (@Dt_Deb_Month < Dt_Fin OR @Dt_Fin_Month < Dt_Fin)) OR
       (Dt_Deb = @Dt_Deb_Month AND (Dt_Fin IS NOT NULL AND @Dt_Fin_Month IS NOT NULL)))
GROUP BY id_chambre

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
[ Lien ]


Cette discussion est classée dans : id, dt, reservation, chambre, deb


Répondre à ce message

Sujets en rapport avec ce message

Left outer join [ par ALLODREN ] Sauriez vous pourquoi cette requête ne me calcule pas la somme correctement ? SELECT k.id_produit, k.id_fournisseur, k.dt_document, k.qt_cmd Insertion dans une table [ par mahz ] Bonsoir, J'ai un probleme d'insertion dans une table.Je m'explique : j'ai deux table a savoir chambre et reservation. Je veux inserer quelques donnees Problême de Requête SQL dans une BdD [ par waldyl ] Bonjour à toutes et à tous :) J'ai un petit soucis au niveau d'une requête, je me remet donc à vous, sans vous sur-estimez [^^happy8] Voila l'idée insertion valeur dans une table avec id (auto increment) [ par fenomeno18 ] Salut à tous Je viens de crée un mini projet avec vb 2008 et sql server je veux insérer des valeur dans une table qui contient un id auto increment Question de PIVOT [ par cudenetf ] Bonjour, je souhaite effectuer une requete me permettant de lister tous les achats d'un type de produit (avec affichage qté et n° de facture pour un t Selection Multiple sur un Champ [ par amadine ] Bonjour J'ai deux tables la première est [b]PERSONNE [/b]([u]Id_personne[/u], Nom, Prenom, Adresse)et la seconde est [b]MAISON[/b]([u]id_maison[/u], afficher premiere ligne de chaque valeur differente d'une colone [ par sammy_88 ] Bonjour à tous, J'ai un base de données SQL. Dans cette base j'ai une liste de compte utilisateurs qui sont dans des départements généralement 2-3. L pivot pour nombre de champs inconnu [ par sarra0 ] Bonjour, J'ai une table MATIERE(id_ma,libelle_ma,id_module) 11_____matière1_____1 12_____matière2_____1 13_____matière3_____2 pour préparer la fiche d Cherche une requête sous MySql [ par lilj ] J Bonjour, voila je cherche une requete qui va me permettre d'afficher en une ligne toutes les informations concernant une enquete donnée sachant qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales