SQL 报表统计-怎样解决时间不连续的有关问题
SQL 报表统计-怎样解决时间不连续的问题?
有这样一个问题:统计查找目标在一段时间的数据
如:
ID 目标ID 访问时间 其他
1 T1 2010-11-14 ...
2 T1 2010-11-15 ...
3 T2 2010-11-14 ...
4 T2 2010-11-15 ...
5 T3 2010-11-17 ...
比如统计时间为:2010-11-13 至 2010-11-17 ,想要的统计结果:
T1 2010-11-13 0
T2 2010-11-13 0
T3 2010-11-13 0
T1 2010-11-14 1
T2 2010-11-14 1
T3 2010-11-14 0
T1 2010-11-15 1
T2 2010-11-15 1
T3 2010-11-15 0
T1 2010-11-16 0
T2 2010-11-16 0
T3 2010-11-16 0
T1 2010-11-17 0
T2 2010-11-17 0
T3 2010-11-17 1
请问,只用SQL语句能否实现上面的结果?怎样实现?请高手帮忙,不胜感激!!
------解决方案--------------------
------解决方案--------------------
mysql 不支持递归查询,下述示例生成所有日期
示例:
DELIMITER $$
USE `ee`$$
DROP PROCEDURE IF EXISTS `RL`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `RL`()
BEGIN
DECLARE ABEG,AEND DATE;
SET ABEG='2000-01-01';
SET AEND='2000-12-30';
WHILE ABEG<=AEND DO
INSERT INTO LSB2 VALUES(ABEG);
SET ABEG=DATE_ADD(ABEG,INTERVAL 1 DAY);
END WHILE;
END$$
DELIMITER ;
有这样一个问题:统计查找目标在一段时间的数据
如:
ID 目标ID 访问时间 其他
1 T1 2010-11-14 ...
2 T1 2010-11-15 ...
3 T2 2010-11-14 ...
4 T2 2010-11-15 ...
5 T3 2010-11-17 ...
比如统计时间为:2010-11-13 至 2010-11-17 ,想要的统计结果:
T1 2010-11-13 0
T2 2010-11-13 0
T3 2010-11-13 0
T1 2010-11-14 1
T2 2010-11-14 1
T3 2010-11-14 0
T1 2010-11-15 1
T2 2010-11-15 1
T3 2010-11-15 0
T1 2010-11-16 0
T2 2010-11-16 0
T3 2010-11-16 0
T1 2010-11-17 0
T2 2010-11-17 0
T3 2010-11-17 1
请问,只用SQL语句能否实现上面的结果?怎样实现?请高手帮忙,不胜感激!!
------解决方案--------------------
------解决方案--------------------
mysql 不支持递归查询,下述示例生成所有日期
示例:
DELIMITER $$
USE `ee`$$
DROP PROCEDURE IF EXISTS `RL`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `RL`()
BEGIN
DECLARE ABEG,AEND DATE;
SET ABEG='2000-01-01';
SET AEND='2000-12-30';
WHILE ABEG<=AEND DO
INSERT INTO LSB2 VALUES(ABEG);
SET ABEG=DATE_ADD(ABEG,INTERVAL 1 DAY);
END WHILE;
END$$
DELIMITER ;