Invalid object name 'cte'.

0

No i nie wiem jak zrobić udate dla wszystkich rekordów z NrWirtualny. Gdzie tu mój błąd?

;with cte
as
(
SELECT
  Cast(CAST(ROW_NUMBER() OVER(PARTITION BY year(DataZalozenia) 
  ORDER BY year(DataZalozenia) DESC)AS int) as nvarchar(10))
   +'/'+ (SELECT Cast(YEAR(DataZalozenia)as nvarchar(4)))as NrWirtualny    
FROM tbllokata   
)
SELECT NrWirtualny  from cte
 
 DECLARE Moj_Cursor CURSOR FOR
 SELECT NrWirtualny  from cte;
OPEN Moj_Cursor;
FETCH NEXT FROM Moj_Cursor;
WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Moj_Cursor;
--update TblLokata1 set nr(Nrwirtualny) from   cte
   END;
CLOSE Moj_Cursor;
DEALLOCATE Moj_Cursor

---Msg 208, Level 16, State 1, Line 16
---Invalid object name 'cte'.

0

Dzieki za strone, ale nieprzydatna dla mnie
--UPDATE TblLokata1
--SET Nr =NrWirtualny from cte
, chodzi mi o update w tym przypaku o 88 rekorduw

2

with cte odnosi się tylko do kolejnego zapytania. Musiałbyś to dodawać przed każdym zapytaniem które ma z tego korzystać.
Myślę że w tym przypadku lepiej użyć tabeli tymczasowej.
Chociaż - kursory? cte? To wszystko wygląda jakby się dało zastąpić jednym prostym updatem

3

Zakładam że tabela tbllokata ma klucz główny w przykładzie id:

with cte
as
(
SELECT
  id,
  Cast(CAST(ROW_NUMBER() OVER(PARTITION BY year(DataZalozenia) 
  ORDER BY year(DataZalozenia) DESC)AS int) as nvarchar(10))
   +'/'+ (SELECT Cast(YEAR(DataZalozenia)as nvarchar(4)))as NrWirtualny    
FROM tbllokata   
)

Update
    tbllokata
set
  nr = cte.NrWirtualny
from
  tbllokata
  inner join cte on cte.id = tbllokata.id
0

Masakra. Super. Wielki dzieki. W drugim zyciu tez tak moze bede umial.
Poz J

1 użytkowników online, w tym zalogowanych: 0, gości: 1