В настоящее время я программирую представление SQL, которое должно предоставлять счетчик заполненного поля за определенный месяц.
Вот как я бы хотел, чтобы представление было построено:
Country | (Current Month - 12) Eg Feb 2011 | (Current Month - 11) | (Current Month - 10)
----------|----------------------------------|----------------------|---------------------
UK | 10 | 11 | 23
Число под месяцем должно быть подсчетом всех заполненных полей для конкретной страны.Поле называется eldate и является датой (приведенной в виде символа) в формате 10-12-2011.Я хочу, чтобы подсчет учитывал только даты, соответствующие месяцу.
Таким образом, столбец «Текущий месяц - 12» должен включать в себя только количество дат, приходящихся на месяц, предшествующий 12 месяцам ранее.Например, текущий месяц - 12 для Великобритании должен включать число дат, приходящихся на февраль-2011.
Я бы хотел, чтобы заголовки столбцов фактически отражали месяц, на который они рассчитывают, так:
Country | Feb 2011 | March 2011 | April 2011
--------|----------|------------|------------
UK | 4 | 12 | 0
Так что-то вроде:
SELECT c.country_name,
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-12 Months% AS NOW() - 12 Months
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-11 Months% AS NOW() - 11 Months
FROM country AS c
INNER JOIN "site" AS s using (country_id)
INNER JOIN "subject_C1" AS "C1" ON "s"."site_id" = "C1"."site_id"
Очевидно, что это не сработает, но просто чтобы дать вам представление о том, к чему я стремлюсь.
Есть идеи?
Спасибо за вашу помощь, больше вопросов, пожалуйста, спросите.