在做图表的时候,会有需要连续时间的记录的需求.但是假如按照时间查询的时候,某一个时间点的并没有产生数据,导致数据的缺失,按照平时的关联查询,会导致中间的数据出现丢失.本来一个月30天的数据,可能就只有十几天的数据.因此,请教了公司的前辈得到了一个解决方法
代码
SELECT b.name,b.dt
FROM (
SELECT *
FROM (
SELECT '2017-05-01' AS dt UNION SELECT '2017-05-02'
UNION SELECT '2017-05-03' ... UNION SELECT '2017-05-30'
) d CROSS JOIN bas_name bn
) b
中间的时间可以通过StringBuffer连接在一起,这样就可以把完整的时间补完整
sql语句中的
CROSS JOIN
的意思是笛卡尔积集,就是所有字段全部关联的处理,详情可以百度