我已经在postgresDB中做了一些功能,但我完全不熟悉MySQL。我认为在MySQL中创建过程几乎是一样的,但显然它不是。所以我要求一些帮助:)
在postgres中,我会为我需要完成的事情编写这个函数:
DROP PROCEDURE IF EXISTS report_incomes;
DELIMITER //
CREATE FUNCTION reportincomes(IN interval INT)
RETURN report_tab TABLE
(
year_month DATE,
total DECIMAL(30,2),
total_before DECIMAL(30,2)
)
AS
BEGIN
FOR row_d IN SELECT * FROM intervals_generator('2013-01-01 00:00:00', now(), interval) LOOP
SELECT sum(cash) AS total, DATE_FORMAT(datetime, '%b %Y') AS year_month FROM incomes WHERE datetime BETWEEN row_d.start_d AND row_d.end_d//
SELECT sum(cash) AS total_before FROM incomes WHERE datetime BETWEEN DATE_SUB(row_d.start_d, INTERVAL 1 YEAR) AND DATE_SUB(row_d.end_d, INTERVAL 1 YEAR)//
END LOOP//
END//
DELIMITER ;
正如您可能已经注意到的那样,代码的很大一部分已经切换到了MySQL,但是我对FOR LOOP很感兴趣,因为与Postgres相比,它在MySQL中看起来很不一样。
当然在LOOP中会添加更多的代码,我只是不想让它太复杂而无法解释。
可以请任何人帮我解决FOR LOOP吗?
基本上,我想为生成自定义间隔的函数返回的每一行执行这些SELECT,同时使用LOOP中该行的数据