У меня две таблицы: local_transports foreign_transports обе таблицы имеют id, entry_time
таблица a:
id---entry_time
==============================
1--2017-07-17 12:10:39
2--2017-04-17 12:10:39
3--2016-07-17 12:10:39
4--2016-05-17 12:10:39
5--2015-07-17 12:10:39
6--2015-07-17 12:10:39
7--2014-07-17 12:10:39
8--2014-06-17 12:10:39
таблица b:
id---entry_time
==============================
1--2017-07-17 12:10:39
2--2017-04-17 12:10:39
3--2016-07-17 12:10:39
4--2016-05-17 12:10:39
5--2015-07-17 12:10:39
6--2015-07-17 12:10:39
7--2014-07-17 12:10:39
8--2014-06-17 12:10:39
мой финансовый год начнется с 1 июля по 30 июня
что я хочу:
-----2014-15--------2015-16-----------2016-17
foreign--local---foreign--local------foreign--local
===============================================
3---5-------------5--6----------------4----10
Я хочу получить бюджетно-годовой счет с даты ввода из обеих таблиц. как я могу получить это в mysql?
Здесь вы можете использовать условную агрегацию:
SELECT
COUNT(CASE WHEN type = 0 AND entry_time >= '2014-07-01' AND
entry_time < '2015-07-01' THEN 1 END) AS foreign_2014,
COUNT(CASE WHEN type = 1 AND entry_time >= '2014-07-01' AND
entry_time < '2015-07-01' THEN 1 END) AS local_2014,
COUNT(CASE WHEN type = 0 AND entry_time >= '2015-07-01' AND
entry_time < '2016-07-01' THEN 1 END) AS foreign_2015,
COUNT(CASE WHEN type = 1 AND entry_time >= '2015-07-01' AND
entry_time < '2016-07-01' THEN 1 END) AS local_2015
-- add more counts for other fiscal years here
FROM
(
SELECT id, entry_time, 0 AS type -- 0 is for foreign
FROM tableA
UNION ALL
SELECT id, entry_time, 1 -- 1 is for local
FROM tableB
) t;
В этом ответе используется профсоюзный трюк, чтобы принести как локальные, так и внешние данные в одну таблицу. Мы присваиваем статус, 0 для иностранных и 1 для локального, в процессе. Затем мы используем выражения CASE
для подсчета записей для каждого года и состояния.
Обратите внимание, что здесь я предполагаю, что таблицы A и B содержат внешние локальные данные anf, соответственно. Если у меня есть это в обратном порядке, то переключите статус в моем запросе.