j'ai un ensemble de données comme celui-ciGroupe par date et et vérifier les dates continues
date1 Price Availability ServiceID
2012-10-01 50 1 5
2012-10-02 60 1 5
2012-10-03 60 1 5
2012-10-04 60 1 5
2012-10-06 60 1 5
2012-10-07 60 0 5
2012-10-08 60 1 5
Maintenant, je veux vérifier quel est le prix total, min disponibilité et Serviceid pour une période donnée
Par exemple
from 2012-10-01 to 2012-10-03 results would be 170, availability 1 and serviceID 5
from 2012-10-06 to 2012-10-08 results would be 180, availability 0! and serviceID 5
from 2012-10-04 to 2012-10-06 results would be 120, availability 1! and serviceID 5 BUT there is a date missing so availability is 0!
J'ai essayé quelque chose comme
select date1, sum(price), min(availability), service from #t
group by date1, price, availability, service
having count(date1) = datediff(day, @startdate, @enddate)
Cela ne fonctionne pas parce que si je groupe par date1, alors compte pas valide. Ne sait pas comment obtenir la somme, la disponibilité min et vérifier les dates en continu.
EDIT Si un jeu de résultats doit contenir des spécifications détaillées. et filtrer les résultats avec min (disponibilité) = 0 ou la date non continue
For example
from 2012-10-01 to 2012-10-03 results would be 170, availability 1 and serviceID 5
date1 Price Availability ServiceID
2012-10-01 50 1 5
2012-10-02 60 1 5
2012-10-03 60 1 5
from 2012-10-06 to 2012-10-08 results would be 180, availability 0! and serviceID 5
date1 Price Availability ServiceID
from 2012-10-04 to 2012-10-06 results would be 120, availability 1! and serviceID 5 BUT
date1 Price Availability ServiceID
Comment pourrait-il être de 2012-10-04 à 2012-10-06 être de 180 s'il y a 2 valeurs avec 60 chacune? Avez-vous besoin d'un «faux» 60 pour la date manquante? –
@NenadZivkovic typo – mko