Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1202 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Filtrer sur la date d'hier dans une requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Filtrer sur la date d'hier dans une requête SQL

n°2392568
+yann
Posté le 04-08-2021 à 09:42:11  profilanswer
 

Bonjour,
 
J'ai une requête SQL qui me donne le passage (traffic) par date dans chaque magasin.  
 
J'aimerais modifier cette requête pour obtenir uniquement le passage de chaque magasin pour la journée d'hier.
 
 
 
Voici ma requête d'origine :
 

Code :
  1. select Magasin, Date, MAX(Passage) AS Passage from
  2. ( select
  3. cu.CompanyUnitID UnitId,
  4. cu.Name AS Magasin,
  5. FORMAT(OpeningDate,'yyyy/MM/dd','en-US') AS Date ,
  6. coalesce(Value,0 ) AS Passage
  7. from BanksRegisters.vReports brr
  8. left join CompanyStructure.vCompanyUnitCashBankRegistersList cubr ON cubr.Name=brr.Name
  9. left join CompanyStructure.CompanyUnits cu ON cu.CompanyUnitID=cubr.CompanyUnitId
  10. left join Attributes.vAttributes va ON va.ObjectID=brr.ReportID and va.InternalName='PeopleCountingValue'
  11. where cu.CompanyUnitID>2 and cu.CompanyUnitID!=37
  12. ) as sub
  13. WHERE sub.Passage BETWEEN 0 AND 999
  14. GROUP BY Magasin,Date


 
J'ai essayé de la modifier sous la forme suivant mais cela augmente le nombre de passage quotidien.
 

Code :
  1. select Magasin, Date, MAX(Passage) AS Passage from
  2. ( select
  3. cu.CompanyUnitID UnitId,
  4. cu.Name AS Magasin,
  5. FORMAT(GETDATE()-1,'yyyy/MM/dd','en-US') AS Date ,
  6. coalesce(Value,0 ) AS Passage
  7. from BanksRegisters.vReports brr
  8. left join CompanyStructure.vCompanyUnitCashBankRegistersList cubr ON cubr.Name=brr.Name
  9. left join CompanyStructure.CompanyUnits cu ON cu.CompanyUnitID=cubr.CompanyUnitId
  10. left join Attributes.vAttributes va ON va.ObjectID=brr.ReportID and va.InternalName='PeopleCountingValue'
  11. where cu.CompanyUnitID>2 and cu.CompanyUnitID!=37
  12. ) as sub
  13. WHERE sub.Passage BETWEEN 0 AND 999
  14. GROUP BY Magasin,Date


 
Auriez vous une idée de pourquoi ca fait ca?

mood
Publicité
Posté le 04-08-2021 à 09:42:11  profilanswer
 

n°2392601
mechkurt
Posté le 04-08-2021 à 11:48:14  profilanswer
 

OpeningDate ça doit être une colonne d'une de tes tables, et elle est dans le select, mettre un GETDATE()-1 ne vas pas filtre tes resultats...
 
Si tu veux filtre il faut ajouter une clause dans ton WHERE (a priori celui de la parenthèse).


---------------
D3
n°2392662
+yann
Posté le 04-08-2021 à 16:52:12  profilanswer
 

Merci pour ton aide mechkurt,
 
J'ai modifié la requête comme ceci mais elle ne retourne aucun résultat
 

Code :
  1. select Magasin, Date, MAX(Passage) AS Passage from
  2. ( select
  3. cu.CompanyUnitID UnitId,
  4. cu.Name AS Magasin,
  5. FORMAT(OpeningDate,'yyyy/MM/dd','en-US') AS Date ,
  6. coalesce(Value,0 ) AS Passage
  7. from BanksRegisters.vReports brr
  8. left join CompanyStructure.vCompanyUnitCashBankRegistersList cubr ON cubr.Name=brr.Name
  9. left join CompanyStructure.CompanyUnits cu ON cu.CompanyUnitID=cubr.CompanyUnitId
  10. left join Attributes.vAttributes va ON va.ObjectID=brr.ReportID and va.InternalName='PeopleCountingValue'
  11. where cu.CompanyUnitID>2 and cu.CompanyUnitID!=37 and OpeningDate=GETDATE()-1
  12. ) as sub
  13. WHERE sub.Passage BETWEEN 0 AND 999
  14. GROUP BY Magasin,Date

n°2392708
rufo
Pas me confondre avec Lycos!
Posté le 05-08-2021 à 14:05:24  profilanswer
 

Vérifie que OpeningDate est bien format en yyyy-mm-dd (donc pas avec le time) et que GETDATE()-1 te renvoie bien une date au format yyyy-mm-dd (et la valeur attendue) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2392716
+yann
Posté le 05-08-2021 à 15:16:55  profilanswer
 

Merci beaucoup ca fonctionne  :jap:  
 

Code :
  1. select Magasin, Date, MAX(Passage) AS Passage from
  2. ( select
  3. cu.CompanyUnitID UnitId,
  4. cu.Name AS Magasin,
  5. FORMAT(OpeningDate,'yyyy/MM/dd','en-US') AS Date ,
  6. coalesce(Value,0 ) AS Passage
  7. from BanksRegisters.vReports brr
  8. left join CompanyStructure.vCompanyUnitCashBankRegistersList cubr ON cubr.Name=brr.Name
  9. left join CompanyStructure.CompanyUnits cu ON cu.CompanyUnitID=cubr.CompanyUnitId
  10. left join Attributes.vAttributes va ON va.ObjectID=brr.ReportID and va.InternalName='PeopleCountingValue'
  11. where cu.CompanyUnitID>2 and cu.CompanyUnitID!=37 and OpeningDate=FORMAT (GETDATE()-1,'yyyy/MM/dd','en-US')
  12. ) as sub
  13. WHERE sub.Passage BETWEEN 0 AND 999
  14. GROUP BY Magasin,Date


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Filtrer sur la date d'hier dans une requête SQL

 

Sujets relatifs
Resultat en fonction d'une dateConvertir une date ex. 12-05-21 en 12-05-2021
[Powershell]Ajouter une valeur dans un tableau dans requête reccursive[Résolu] Souci sur code SQL
[Batch] Ajout date création au nom lors d'une copieentrer date dans textbox avec préalable jj-mm-aaaa
[PostgreSQL] Requête hiérarchiqueenvoi de requête en php sur Home-assistant
[SQL] Trouver une chaine dans une phraseProposition playlist Youtube SQL/Powershell/Postgres
Plus de sujets relatifs à : Filtrer sur la date d'hier dans une requête SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR