Вложенный цикл SQL

#cursor #nested-loops

#sql #вложенные циклы #база данных-курсор

Вопрос:

У меня возникают некоторые проблемы с кодом T-SQl, который выглядит следующим образом :

 DECLARE @current_customer_id INT; DECLARE @current_customer_name VARCHAR(max); DECLARE @current_month INT ;  DECLARE @query_for_months VARCHAR(max); DECLARE @transpose varchar(max);  SET @transpose=',(select SUM(TAB.price)   from  (select Scu.CustomerID as CuID , Scu.CustomerName as CuName ,   SIL.Quantity*SIL.UnitPrice as price , SI.InvoiceDate  from Sales.Customers as Scu   INNER JOIN Sales.Invoices as SI on Scu.CustomerID=SI.CustomerID  INNER JOIN Sales.InvoiceLines as SIL on SI.InvoiceID=SIL.InvoiceID  where MONTH(SI.invoicedate)=lt;current_monthgt; and   YEAR(SI.invoicedate)=2013 and SCU.CustomerID=lt;current_customer_idgt;  )AS TAB  group by TAB.CuID, TAB.CuName) as total_value_lt;current_monthgt;'  DECLARE cursornameid CURSOR FOR  select CustomerID from Sales.Customers Order by customername ASC ;   open cursornameid ;  fetch next from cursornameid into @current_customer_id    While @@FETCH_STATUS=0   BEGIN    DECLARE cursormonth CURSOR for   select num_month  from months ;    SET @query_for_months='select 1 as customer'   SET @transpose=REPLACE(@transpose,'lt;current_customer_idgt;',@current_customer_id)  Open cursormonth ;  fetch next from cursormonth into @current_month ;  while @@FETCH_STATUS=0   BEGIN       SET=@query_for_months=@query_for_months   REPLACE(@transpose,'lt;current_monthgt;',@current_month) ;  fetch next from cursormonth into @current_month ;  END   CLOSE cursormonth ;  DEALLOCATE cursormonth;  FETCH NEXT FROM cursornameid into @current_customer_id  END   close cursornameid;  DEALLOCATE cursornameid ;  Exec(@query_for_months)  

Этот код показывает только первый результат внешнего цикла (для первого клиента за все месяцы), но он не смог перейти ко второму , кажется, что два цикла правильно вложены, и я игнорирую, почему он это делает, пожалуйста, помогите ! Лучшие