MySQL суммы без использования с накопительным

0

Я использую phpgrid для отображения данных запроса, затем фильтрацию через выбор формы на странице. Это отлично работает, пока я не добавлю с rollup к запросу, чтобы суммировать столбцы, и я задавался вопросом, есть ли какой-либо другой метод суммирования этих столбцов (12 из них)?

Это не работает, говоря мне. Не удалось выполнить запрос. Неизвестный столбец "i.signedupdate" в разделе "where"

SELECT * FROM
  (SELECT IFNULL(c.Adviser, 'GRAND TOTAL') AS Adviser,
  Sum(Month(i.SignedUpDate) = 1) As Jan,
  Sum(Month(i.SignedUpDate) = 2) As Feb,
  Sum(Month(i.SignedUpDate) = 3) As Mar,
  Sum(Month(i.SignedUpDate) = 4) As Apr,
  Sum(Month(i.SignedUpDate) = 5) As May,
  Sum(Month(i.SignedUpDate) = 6) As Jun,
  Sum(Month(i.SignedUpDate) = 7) As Jul,
  Sum(Month(i.SignedUpDate) = 8) As Aug,
  Sum(Month(i.SignedUpDate) = 9) As Sept,
  Sum(Month(i.SignedUpDate) = 10) As Oct,
  Sum(Month(i.SignedUpDate) = 11) As Nov,
  Sum(Month(i.SignedUpDate) = 12) As Dece,
  i.id,
  Count(i.id) As Total
    From
  tbl_lead i Inner Join
  tbl_clients c On i.client_id = c.client_id
Group By
    c.Adviser with rollup) As t

Это работает, я могу выбрать годы нормально, но нет сводки столбцов

SELECT * FROM
  c.Adviser AS Adviser,
  Sum(Month(i.SignedUpDate) = 1) As Jan,
  Sum(Month(i.SignedUpDate) = 2) As Feb,
  Sum(Month(i.SignedUpDate) = 3) As Mar,
  Sum(Month(i.SignedUpDate) = 4) As Apr,
  Sum(Month(i.SignedUpDate) = 5) As May,
  Sum(Month(i.SignedUpDate) = 6) As Jun,
  Sum(Month(i.SignedUpDate) = 7) As Jul,
  Sum(Month(i.SignedUpDate) = 8) As Aug,
  Sum(Month(i.SignedUpDate) = 9) As Sept,
  Sum(Month(i.SignedUpDate) = 10) As Oct,
  Sum(Month(i.SignedUpDate) = 11) As Nov,
  Sum(Month(i.SignedUpDate) = 12) As Dece,
  i.id,
  Count(i.id) As Total
    From
  tbl_lead i Inner Join
  tbl_clients c On i.client_id = c.client_id
Group By
    c.Adviser

Если я просто удаляю подзапрос и оставляю "с rollup", он предупреждает меня о некорректном использовании заказа с помощью rollup?

Любые идеи, которые очень ценятся, просто должны суммировать все эти столбцы

  • 1
    У вас есть 2 предложения FROM во втором примере, что неверно. Это не связано с вашей реальной проблемой, а просто привлекло внимание ....
  • 0
    В любом случае, почему бы не сделать резюме в datagrid / javascript?
Показать ещё 1 комментарий
Теги:
rollup
sum

1 ответ

1
Лучший ответ

Вы должны использовать представление SQL, как рекомендуется здесь.

Рекомендуется использовать представление Sql, когда Sql является сложным. Это, по сути, виртуальная таблица, из которых это определяется как запрос SQL SELECT с объединениями. Поскольку представление базы данных аналогично таблице базы данных, которая состоит из строк и столбцов, так что вы можете запрашивать данные так же, как и фактическую таблицу базы данных.

Еще одно преимущество заключается в том, что вы можете повторно использовать это представление. Кроме того, если вы используете представление вместо объединенных таблиц, в будущем, если вам нужно изменить столбец, вы можете легко сделать это и только потребовать внесения изменений в представление Sql.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню