viernes, 24 de abril de 2015

SqlServer - update filas con datos de la misma tabla

Una curiosidad
En una tabla tenemos: La columan Year y nombre es clave única
year nombre alias
2014 user1 alias1
2014 user2 alias2
2014 user3 alias3
2015 user1 NULL
2015 user5 NULL
2015 user6 NULL

Hemos dado da alta para el nuevo año  2015 los usuarios , pero queremos traspasar los alias de un año a otro

Pues un update no?


update mitabla set alias = ( Select alias from  mitabla  aux  where aux.year ='2014' and aux.nombre = nombre   
where year= '2015'

Esto da un error, poco aclarador
Mens. 512, Nivel 16, Estado 1, Línea 1
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.<br />
Se terminó la instrucción
Mens. 512, Nivel 16, Estado 1, Línea 1
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
Se terminó la instrucción
La solución


update mitabla set alias = ( Select alias from  mitabla  aux  where aux.year ='2014' and aux.nombre = mitabla.nombre  where year= '2014'

No hay comentarios:

Publicar un comentario