Измените переменную таблицы, включив в нее столбец RunningCount:
DECLARE @TicketHolder TABLE (
[Name] VARCHAR(100),
Tickets DECIMAL(18, 8),
RunningCount decimal(18,8)
);
Добавьте данные билета:
INSERT INTO @TicketHolder ([Name], Tickets)
SELECT 'Bob', 10.37
UNION ALL
SELECT 'Lisa', 1
UNION ALL
SELECT 'Robbie', 150.981
UNION ALL
SELECT 'Cathy', 97.888531;
Составьте промежуточный итог всех купленных билетов и обновите таблицу с количеством:
declare @RunningCount decimal(18,8) = 0
update @TicketHolder
set
@RunningCount = @RunningCount + Tickets,
RunningCount = @RunningCount
Рассчитайте номер выигравшего билета
declare @WinningCount decimal(18,8) = @RunningCount * rand()
Выберите победителя:
select top 1
@WinningCount,
Name
from
@TicketHolder
where
RunningCount <= @WinningCount
order by
RunningCount desc