begin process at 2010 03 19 02:19:53
  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 chambre dans laquelle il y a des lits disponiblent dans un hopital [ par sexbombrock ] Bonjour, Mon soucie vient de la requette a fai modification dans une jointure [ par marocmarocmaroc ] Salutj'ai un problème en sql/php  je veux modifier des champs issues de deux  tables  article (code_article,designation) et article_magasin(qte_stocke Procedure de recherche [ par hardzip ] Bonjour tout le mondeJe suis actuellement entrain de mettre en place un formulaire de recherche avec asp et  .NET et j'ai un probleme qui me bloque de SQL server 2005 - script pour récupérer tous trg - proc - fonc [ par slau ] Bonjour à tous, Besoin d'un p'tit coup e demain pour le script joint. Certains des 'programmes' que j'extraits (un trigger en l'occurence) est tronqué Premier Résultat d'un group by ordonnée par date [ par kornetmuse ] Bonjour, Un petit soucis bien pénible. J'ai une première requête SELECT Dossier_Audit.DOSARC_après, Dossier_Audit.DOSARC_DOS_ID, Dossier_Audit.DOS requête sql [ par jodanielprince ] Salut à tous ! Je voudrais écrire une requête qui va me retourner certaines valeurs: voici la composition des tables EMPLOYEE(Employee_ID, Last_Name, Structure de base de donnée pour questionnaire [ par muraone ] Bonjour, Je dois réaliser un formulaire dans mon application (que je développe en C++ avec Qt) et j'aimerais stocker les réponses de ce formulaire da Problème avec une SP avec SELECT et WHERE multiple [ par SoyYo ] Salut, comme dit dans le titre, j'ai un problème avec une SP qui et un select: CREATE PROCEDURE `AdminConnect`(nom varchar(255), pass varchar(255)) B


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,593 sec (3)

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