我正在尝试使用SP&获取每个日期的结果我正在使用循环并使用union all附加sql语句,但它正在获取变量日期的最后一个值。
表:
CREATE TABLE `bugs` (
`id` int(11) DEFAULT NULL,
`severity` int(11) DEFAULT NULL,
`open_date` date DEFAULT NULL,
`close_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SP:
DELIMITER $$
DROP PROCEDURE IF EXISTS search$$
CREATE PROCEDURE search(startDate DATE, endDate DATE)
BEGIN
DECLARE result VARCHAR(255);
SET @iterDate = DATE(startDate);
SET @result = '';
label1: LOOP
SET @result = CONCAT(@result, ' SELECT DATE(@iterDate), count(*) FROM bugs WHERE open_date = DATE(@iterDate) AND close_date > DATE(@iterDate) UNION ALL');
SET @iterDate = DATE_ADD(@iterDate, INTERVAL 1 DAY);
IF @iterDate <= DATE(endDate) THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SET @result = LEFT(@result, LENGTH(@result)-LENGTH('UNION ALL'));
PREPARE stmt FROM @result;
EXECUTE stmt;
END$$
DELIMITER ;
这将采用每个日期的日期范围和记录计数。在我的中,它采用最后日期(endDate + 1)来执行最后形成的查询。
答案 0 :(得分:0)
只需更改@iterDate递增(SET命令)和@iterDate条件检查(IF命令)的顺序。