Member 10971811 Ответов: 0

КТР рекурсивную не уменьшать


Данные таблицы элементов
ID_element Element1 Element2 DATE_Ele ID_Personne
        1       NULL     25      2002      1
        2       46     NULL      2003      1
        3       2      NULL      2004      1
        4       3       NULL     2005      1
        5       5      NULL      2006      1
        6      178      NULL    2007       1

Данные таблицы зарплата
ID_Personne       Date
1                  2007

Я делаю соединение между двумя таблицами ID_Personne ссылка и я взял две даты, соответствующие следующим образом
select ID_Personne,Date_Per,Element1 ,Element2 ,DATE_Ele       
from Personne as P
Inner Join element as c
ON C.ID_Personne=P.ID_Personne
AND Date_Per=DATE_Ele

Таким образом, в нашем примере 2007 триггер отхода цикла к декременту-1, но мы должны проверить, что в 2007 году , если element1 не равен null и element2 равен null, до тех пор, пока это условие проверено, продолжайте декрементировать date_Pers -1, который всегда равен date_Eleme, пока условие не будет соблюдено, я имею в виду, что в этом примере 2002 не отвечает нашему критерию, потому что element1 равен null и не является null element2, поэтому мы остановили наш цикл.

Что я уже пробовал:

это мой запрос ,но он не уменьшает дату. Любая помощь будет очень признательна
;With CTE_AS
AS 
(
       Select  Distinct  Dem.IdPersonne, Element1,Element2,Date_Pers as AnneeFct
     --  into #test
           From  element AS Dem 
                Inner Join Element as cpr WITH (NOLOCK)
                ON      IdPersonne = .IdPersonne
              AND Date_Pers =Date_Ele
              where Element1is not null and Element2 is null
       UNION ALL
              Select  Distinct  Dem.IdPersonne, Element1,Element2, AnneeFct
     --  into #test
           From  CTE_AS AS Dem 
                Inner Join Element as cpr WITH (NOLOCK)
                ON      Id_Personne = .Id_Personne
              AND Date_Pers =Date_Ele
              AND Date_Pers = AnneeFct-1
              where Element1is not null and Element2 is null
)
Select  Distinct  Dem.IdPersonne, Element1,Element2, AnneeFct
FROM         CTE_AS 
OPTION (MAXRECURSION 100)

Wendelius

В вашем примере, каков ожидаемый результат?

Member 10971811

ожидаемые данные должны получить этот результат после того, как условие не будет соблюдено, как эти данные.
ID_element Element1 Element2 DATE_Ele ID_Personne
1 NULL 25 2002 1

0 Ответов