Niunaiストレージ・プロシージャ行変換列
1777 ワード
begin
DECLARE done int default 0;
DECLARE m_kind int;
declare m_name varchar(40) default '';
declare cp int default 0;
DECLARE str text default '';
declare m_date Datetime;
DECLARE sqll text default '';
DECLARE cur1 CURSOR FOR select milk_id from milk_kind;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
open cur1;
REPEAT
if not done then
FETCH cur1 INTO m_kind;
set str=CONCAT(str,',' , 'sum(if(milk_id= ',m_kind, ' , 1, 0))', '''',cp,'''');
set cp=cp+1;
end IF;
UNTIL done END REPEAT;
set cp=1;
set m_date='2009-10-01';
set sqll=CONCAT("select date_format(str_to_date('",m_date,"', '%Y-%m-%d'), '%Y-%m-%d') ",str," from distribution where '",m_date,"'<=date_end and '",m_date,"'>=date_start");
while datediff(m_date, '2009-11-01')<-1 do
set m_date=date_add(m_date,interval 1 day);
set sqll=concat(sqll," union select date_format(str_to_date('",m_date,"', '%Y-%m-%d'), '%Y-%m-%d') ",str," from distribution where '",m_date,"'<=date_end and '",m_date,"'>=date_start");
end while;
set @sqlString=sqll;
prepare sqlstmt from @sqlString;
execute sqlstmt;
deallocate prepare sqlstmt;
end