我有两个表: 本地交通 外国运输 两个表都有 id,entry_time
表一:
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
我的财政年度将从 7 月 1 日开始到 6 月 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 表分别包含外部和本地数据。如果我把它倒过来,则在我的查询中切换状态。
关于mysql - 根据mysql中的日期时间从两个不同的表中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976430/