Рекурсивный CTE не производит никаких изменений в начальном запросе - PullRequest
0 голосов
/ 13 апреля 2020

Вот мой текущий код:

--DROP TABLE #DataSet
CREATE TABLE #DataSet (
 [Client Number]    VARCHAR(6)
,[Account Caption]  VARCHAR(1)
,[From]             NUMERIC(18,8)       
,[To]               NUMERIC(18,8)   
,[ADDL UNIT RATE]   NUMERIC(18,8)
,[ADDL UNIT BASE]   NUMERIC(18,8)
)

INSERT INTO #DataSet 
SELECT '369229','0',0.01000000      ,100.00000000   ,6.55000000,1000.00000000   UNION
SELECT '369229','0',100.01000000    ,250.00000000   ,6.55000000,1000.00000000   UNION
SELECT '369229','0',250.01000000    ,500.00000000   ,6.55000000,1000.00000000   UNION
SELECT '369229','0',500.01000000    ,750.00000000   ,6.55000000,1000.00000000   UNION
SELECT '369229','0',750.01000000    ,1000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',1000.01000000   ,1200.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',1200.01000000   ,1500.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',1500.01000000   ,2000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',2000.01000000   ,2500.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',2500.01000000   ,3000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',3000.01000000   ,3500.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',3500.01000000   ,4000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',4000.01000000   ,5000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',5000.01000000   ,6000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',6000.01000000   ,7000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',7000.01000000   ,8000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',8000.01000000   ,9000.00000000  ,6.55000000,1000.00000000   UNION
SELECT '369229','0',9000.01000000   ,10000.00000000 ,6.55000000,1000.00000000   



 ;With 
 MaxVal AS 
 (
 SELECT  
 15000.00 AS MaxValue
 ,'0' AS [Account Caption (Pricing)]
 ,'369229' AS CLIENT_NUMBER 
  )
 ,RecursiveCTE AS 
 (
 SELECT 

       [Client Number]
      ,[Account Caption]
      ,[From]                                   = CAST([From]                                     AS NUMERIC(18,8))
      ,[To]                                     = CAST([To]                                       AS NUMERIC(18,8))
      ,[ADDL UNIT RATE]
      ,[ADDL UNIT BASE]
      ,MaxValue
  FROM #DataSet v JOIN MaxVal m on m.[Account Caption (Pricing)] = v.[Account Caption] AND m.CLIENT_NUMBER = v.[Client Number]

UNION ALL

SELECT 
       [Client Number]
      ,[Account Caption]
      ,CAST([From]                              + [ADDL UNIT BASE]      AS NUMERIC(18,8))
      ,CAST([To]                                + [ADDL UNIT BASE]      AS NUMERIC(18,8))
      ,[ADDL UNIT RATE]
      ,[ADDL UNIT BASE]
      ,MaxValue
  FROM RecursiveCTE
  WHERE [To] + [ADDL UNIT BASE] >= MaxValue
 )
 SELECT * FROM RecursiveCTE 
 WHERE 1=1
 OPTION (maxrecursion 100)

Я ожидаю, что [From] и [To] будут построены еще на 1000, пока [To] не станет больше, чем или равно моему максимальному значению 15000,00

ожидаемых результатов:

enter image description here

Вместо этого я не получаю никаких изменений в Первоначальные результаты таблицы. Что я тут не так делаю?

...