У меня есть хранимая процедура, которая запускает оператор выбора, который возвращает одну строку и вставляет содержимое во временную таблицу. Оператор select содержит 6 условных операторов в предложении where, и мне, по сути, нужно пройтись по 3 дополнительным наборам критериев и вставить эти результаты во временную таблицу. Вот что у меня есть:
CREATE DEFINER=`sleuser`@`%` PROCEDURE `CostDashboard`()
BEGIN
create temporary table TempTable (
ProjectID int,
Phase varchar(100),
OriginalCommitments float,
ApprovedCommitmentChanges float,
CurrentAssigned float,
PendingScopeChanges float,
EAC float,
PercentComplete float
);
insert into TempTable(
SELECT project_id,
'FP' as Phase,
OriginalCommitments,
ApprovedCommitmentChanges,
OriginalCommitments+ApprovedCommitmentChanges as CurrentAssigned,
sum(ProjectCostBudget.PendingChangeOrders) as PendingScopeChanges
sum(ProjectCost.CurrentWorkCompleted) +
sum(ProjectCost.EstimateToComplete) as EAC,
(sum(ProjectCost.CurrentWorkCompleted) +
sum(ProjectCost.EstimateToComplete) /
(sum(ProjectCostBudget.OriginalContractPrice +
ProjectCostBudget.RegisteredChangeOrders))) as PercentComplete
FROM `RCLY-DEV`.project
inner join ImportCost on ImportCost.ProjectID = project.pmis
inner join ProjectCostBudget on ProjectCostBudget.ProjectID =
project.project_id
inner join ProjectCost on ProjectCost.ProjectID = project.project_id
where ImportCost.ProjectID = 'RLCY-BB-01'
and ImportCost.Task = "020.0000.000"
and ProjectCostBudget.ProjectID = 2
and ProjectCostBudget.ServiceNumber = "020.0000.000"
and ProjectCost.MonthYear != ''
and ProjectCost.MonthYear like 'July%2018'
);
select * from TempTable
;
END
Это работает и вставляет одну запись с жестко закодированными значениями в предложении where, но мне нужно запустить ее для 3 наборов переменных, поэтому я создал дополнительную временную таблицу, например:
|ImpCostID|ImpCostTask |PCBID|PCBServNum |MonthYear|
-----------------------------------------------------
|XXY-01-01|030.0000.000|3 |030.0000.000|July%2018|
|QWY-01-01|040.0000.000|4 |040.0000.000|May%2018 |
|ZXF-01-01|040.0000.000|5 |050.0000.000|June%2018|
но я не уверен, как назначить эти наборы значений переменным, а затем перебрать их. Есть предложения?