Я строю этот отчет в системе для компании Billboard. У них есть таблица, в которой хранятся все их рекламные щиты, а среди других данных на рекламных щитах есть дата начала и дата окончания (оба могут быть нулевыми).
Если по какой-то причине рекламный щит должен прекратить использоваться, они устанавливают дату окончания, и после этой даты он станет ненужным. То же самое с датой начала (в случае, если они просто настроили новую плату, и она будет доступна для использования после установленной даты начала).SQL Looping
В этом отчете я должен получить сумму всех возможных рекламных площадок за определенный период времени.
Таким образом, позволяет сказать, что за период я выбрал (4 недели, для Exemple)
* В 1-й неделе есть 500 Avaiable доски
* В неделю 2 один борт стал недоступной (изготовление 498 досок Avaiable)
* В неделю 3 две доски стали доклада доступен (изготовление 501 досок Avaiable)
* В неделю 4 один борт стал доклада доступен и одна другая стала недоступной (изготовление 501 досок Avaiable)
Итак, я должен иметь в общей сложности 1990 Avaiable досок в этот период я получил результат.
Как я могу получить это в одном запросе?
Неделю придет из HTML-формы, и я должен преобразовать их в даты перед запросом, поэтому у меня будут только даты, когда я хочу знать, сколько плат доступно.
Запрос, чтобы получить количество досок для одной конкретной даты, как это:
SELECT
COUNT(IdBillboard)
FROM
tBillboards
WHERE
(StartDate IS NULL OR StartDate <= '2009-01-05 00:00:00')
AND (FinishDate IS NULL OR FinishDate >= '2009-01-05 00:00:00')
Я не могу просто добавить AND
и OR
условными на каждую дату, потому что я вроде нужен новый подсчёт для отдельных дат. Я думал об использовании WHILE
, но не мог точно определить, как это сделать для этого случая. Так вот, где я застрял ... Я отправлю более подробную информацию, если кому-то это понадобится.
Спасибо, Гейб
Я думаю, вы имели в виду 498 плат в неделю 2. – achinda99
Ха-ха. Починил это. Спасибо – Gabe
Все ли всегда делится на неделю? –