次のMYSQLストアドプロシージャがあります。
CREATE PROCEDURE DWH.product_stats(OUT int_return INT)
BEGIN
DECLARE vc_sku,
vc_prod_id VARCHAR(100);
DECLARE int_views,
int_fav,
int_month,
int_year,
not_found INT DEFAULT 0;
DECLARE cur_sku CURSOR FOR
SELECT product_id, sku FROM product LIMIT 0,10;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1;
OPEN cur_sku;
REPEAT
FETCH cur_sku INTO vc_prod_id, vc_sku;
IF NOT not_found THEN
-- Number of Views and Favs
SELECT COUNT(CASE WHEN event_type_id = 1 THEN 1 END) AS views,
COUNT(CASE WHEN event_type_id = 5 THEN 1 END) AS favs,
MONTH(logged_at) AS log_mon,
YEAR(logged_at) AS log_year INTO int_views, int_fav, int_month, int_year
FROM report_event
WHERE object_id = vc_prod_id
GROUP BY log_mon, log_year
ORDER BY log_year, log_mon;
-- DEBUG
SELECT vc_sku, vc_prod_id, int_views, int_fav, int_month, int_year ;
END IF;
UNTIL not_found END REPEAT ;
CLOSE cur_sku;
END;
これを正常に実行すると、エラーはありません。私は結果を得る。しかし、MYSQL ストアド プロシージャでこれを使用します。次に、ストア プロシージャを実行しようとすると、「結果は複数の行で構成されています」というエラーが表示されます。これは、月と年の GROUP BY があり、製品に対して複数のレコードが生成されるためです。しかし、それは私が欲しい機能です。この問題に対処する最善の方法は何でしょうか?