Мне нужно выполнить скрипт с несколькими циклами while. Пример Мне нужно вставить данные с приращением, а также нужно будет вставить данные на основе поля даты.
Пока петли 1,3 работают нормально.
Я могу вставить данные, но цикл while 2 выполняется как условие, что означает, что вставлено только начальное значение, а другое значение не вставлено.
Есть ли что-то, что я пропускаю или это невозможно?
Я запускаю это на Azure 12.0.2000.8
DECLARE @cnt INT = 1
DECLARE @Pcnt INT = 1
DECLARE @name VARCHAR(150), @startval decimal(16,8), @endval decimal(16,8), @incval decimal(16,8), @Startdt DATETIME, @Enddt DATETIME
WHILE @cnt<=(SELECT MAX(id)FROM #temp) --- While loop 1
BEGIN
SELECT @name=name,@startval=startval,@endval=ENDval,@incval=inc,@Startdt=Startdt,@Enddt=ENDdt FROM #temp where id=@cnt
WHILE @Startdt<=@Enddt -- While loop 2
BEGIN
WHILE @startval<=@endval --- While loop 3
BEGIN
INSERT INTO #FinalTable
VALUES
( @Startdt, @name, @startval, GETDATE() )
SET @startval=@startval+@incval
END
SET @Startdt= DATEADD(dy,7,@Startdt)
END
SET @cnt=@cnt+1
END
Ниже приведен мой набор результатов #temp Table:
id name startval ENDval inc Startdt ENDdt
1 Test1 0.00000000 0.95000000 0.19000000 2018-07-06 2019-03-22
2 Test2 0.00000000 3.00000000 0.60000000 2018-07-06 2019-03-22
3 Test3 0.00000000 2.50000000 0.50000000 2018-07-06 2019-03-22
4 Test4 0.00000000 4.00000000 0.80000000 2018-07-06 2019-03-22
Это результат, который я получаю для текущей процедуры,
SELECT WeekEndingDate,MetricType,MetricValue,InsertDate FROM #FinalTable
WeekEndingDate MetricType MetricValue InsertDate
2018-07-06 00:00:00.000 Test1 0.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.19000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.38000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.57000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.76000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.95000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 0.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 0.60000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 1.20000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 1.80000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 2.40000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test2 3.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 0.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 0.50000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 1.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 1.50000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 2.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test3 2.50000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 0.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 0.80000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 1.60000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 2.40000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 3.20000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test4 4.00000000 2019-05-07 18:14:29.083
Мне на самом деле понадобится результат для #FinalTable, как показано ниже: для Test1 у нас должны быть все инкрементные значения для каждой даты, но в настоящее время он вставляет только записи для: 2018-07-06 00: 00: 00.000 даты.
WeekEndingDate MetricType MetricValue InsertDate
2018-07-06 00:00:00.000 Test1 0.00000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.19000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.38000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.57000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.76000000 2019-05-07 18:14:29.080
2018-07-06 00:00:00.000 Test1 0.95000000 2019-05-07 18:14:29.080
2018-07-13 00:00:00.000 Test1 0.00000000 2019-05-07 18:14:29.080
.
.
2019-03-22 00:00:00.000 Test1 0.95000000 2019-05-07 18:14:29.080
.
.
2018-07-06 00:00:00.000 Test4 0.00000000 2019-05-07 18:14:29.080
.
.
2019-03-22 00:00:00.000 Test4 3.20000000 2019-05-07 18:14:29.080
2019-03-22 00:00:00.000 Test4 4.00000000 2019-05-07 18:14:29.083