Получить счет из двух разных таблиц на основе datetime в MySQL

0

У меня две таблицы: 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?

Теги:

1 ответ

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

Здесь вы можете использовать условную агрегацию:

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, соответственно. Если у меня есть это в обратном порядке, то переключите статус в моем запросе.

Ещё вопросы

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