EnVisageOnline/Main-RMO/Database/Scripts/20150520/02_FixOverwrittenPlannedCap...

42 lines
1.4 KiB
Transact-SQL

use EnVisage
go
select s.id, s.Name, MAX(sd.quantity) as maxquantity
into #tmp
from ScenarioDetail sd
inner join Scenario s on s.Id = sd.ParentID
where s.Type = 13
group by s.Id, s.Name
declare tms cursor for select t.id, t.Name, t.PlannedCapacityScenarioId from Team t
left join ScenarioDetail sd on sd.ParentID = t.PlannedCapacityScenarioId
group by t.id, t.Name, t.PlannedCapacityScenarioId
having MAX(sd.quantity) is null or MAX(sd.quantity) < 1
order by t.Name
declare @teamId uniqueidentifier
declare @teamPlannedScenarioId uniqueidentifier
declare @teamName nvarchar(500)
declare @maxq decimal
declare @newScenId uniqueidentifier
open tms
fetch next from tms into @teamId, @teamName, @teamPlannedScenarioId
while @@FETCH_STATUS = 0
begin
print 'begin team ' + @teamName
set @maxq = null
select @maxq = maxquantity, @newScenId = id from #tmp where name like @teamName + ' Planned Capacity' and id <> @teamPlannedScenarioId order by maxquantity desc
if @maxq is not null
begin
print 'found scenario with maximal quantity = ' + cast(@maxq as nvarchar(50)) + ', applying this scenario'
update Team set PlannedCapacityScenarioId = @newScenId where id = @teamId
exec sp_DeleteScenario @teamPlannedScenarioId
end
else
print 'found no other scenarios for this team - leaving zero scenario'
print '-------------------------'
fetch next from tms into @teamId, @teamName, @teamPlannedScenarioId
end
close tms
deallocate tms
drop table #tmp