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

Filtrer sur la date d'hier dans une requête SQL - SQL/NoSQL - Programmation

Marsh Posté le 04-08-2021 à 09:42:11    

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?

Reply

Marsh Posté le 04-08-2021 à 09:42:11   

Reply

Marsh Posté le 04-08-2021 à 11:48:14    

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
Reply

Marsh Posté le 04-08-2021 à 16:52:12    

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

Reply

Marsh Posté le 05-08-2021 à 14:05:24    

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
Reply

Marsh Posté le 05-08-2021 à 15:16:55    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed