2010-10-11 6 views
0

J'essaie d'utiliser un curseur pour déplacer créer une colonne qui a toutes les parties égales à un champ qui était avant lui. Dans l'exempleSql - Question sur les curseurs et les variables

| column1 | column 2 | 
|  1  |  a  | 
|  2  |  b  | 
|  3  |  c  | 

would to go... 

| column1 | column2 | column3 | 
|  1  |  a |  b  | 
|  2  |  b |  c  | 
|  3  |  c | NULL | 

Donc, pour ce faire, je tentais à l'aide d'un curseur et une instruction de mise à jour sur la dernière instruction fetch comme ci-dessous:

DECLARE myCursor1 CURSOR READ_ONLY 
FOR 
SELECT lname AS 'lnamerecoff' 
FROM testingThis 
ORDER BY lname 

OPEN myCursor1 
DECLARE @previous char(15) 
DECLARE @new char(15) 

SET @previous = FETCH NEXT FROM myCursor1 

IF NOT EXISTS(SELECT * FROM sys.columns WHERE name = 'lnamerecoff' 
         AND object_id = OBJECT_ID('testingThis')) 
    ALTER TABLE testingThis ADD lnamerecoff int 

WHILE @@FETCH_STATUS = 0 
BEGIN 
SET @new = FETCH NEXT FROM myCursor1 
UPDATE testingThis 
SET lnamerecoff = @new 
SET @previous = @new 
END 

Ce jette une erreur de syntaxe près de mon instruction fetch . Est-ce que quelqu'un peut m'aider avec ça? Merci!

+1

LEAD et fonctions LAG aurait fait ce si simple:/ –

+0

Ce ne sont pas disponibles dans SQL Server 2005 cependant, sont-ils? – user416516

Répondre

1

Il devrait être:

fetch next from myCursor1 into @previous