registros - ¿Cómo puedo intercambiar valores de columna en SQL server 2008?
row_number sql server 2008 ejemplos (7)
Este es realmente un buen ejemplo
SELECT * from employees;
Go
DECLARE @temp as varchar(20)
update employees
set @temp = fname,
fname = lname,
lname = @temp
WHERE deptno = 10;
GO
SELECT * from employees;
Tengo una mesa llamada Empleado
Eno ename AttributeValue AttributeName
1 aa a123 abc
2 bbb b123 dcf
3 cc c7sd wew3
Quiero intercambiar los datos de la columna AttributeValue
a AttributeName
y AttributeName
a AttributeValue
Por ejemplo:
Eno ename AttributeValue AttributeName
1 aa abc a123
2 bbb dcf b123
3 cc wew3 c7sd
Simplemente intercambie ambas columnas en una sola actualización:
Update registration
Set AttributeName = AttributeValue ,
AttributeValue = AttributeName where id in (1,2,3)
Todas las técnicas anteriores son lentas para la tabla grande que mueven la fecha en lugar de cambiar el nombre de las columnas, esta es una solución simple:
ALTER TABLE "amplitude"
RENAME COLUMN "start_hour_displayed" TO "temp";
ALTER TABLE "amplitude"
RENAME COLUMN "start_hour" TO "start_hour_displayed";
ALTER TABLE "amplitude"
RENAME COLUMN "temp" TO "start_hour";
Si tiene vistas de funciones vinculadas, tiene que hacer una copia de seguridad antes y restaurarlas después.
update Employee set AttributeValue = AttributeName, AttributeName = AttributeValue
Declare @myTable Table (id int, first_name varchar(50), last_name varchar(50));
Select * from Student
Insert Into @myTable (id, first_name, last_name) Select id, last_name, first_name from Student
MERGE
INTO Student std
USING @myTable tmp
ON std.id = tmp.id
WHEN MATCHED THEN
UPDATE
SET std.first_name = tmp.first_name,
std.last_name = tmp.last_name;
Select * from Student
Salida
UPDATE employee
SET AttributeValue = AttributeName,
AttributeName = AttributeValue
Sin embargo, a menos que ambas columnas tengan exactamente la misma definición, corre el riesgo de perder información.
Update employee
Set attributeValue = attributeName,
attributeName = attributeValue