FOR IN IN SELECT(Postgres与MySQL)

时间:2015-08-09 20:48:15

标签: mysql postgresql

我已经在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中该行的数据

0 个答案:

没有答案