![](/img/trans.png)
[英]How do I display column data in rows grouping by column values using SQL Server 2008?
[英]How do I swap column values in sql server 2008?
我有一張名為 Employee 的表
Eno ename AttributeValue AttributeName
1 aa a123 abc
2 bbb b123 dcf
3 cc c7sd wew3
我想將數據從AttributeValue
列交換為AttributeName
並將AttributeName
交換為AttributeValue
例如:
Eno ename AttributeValue AttributeName
1 aa abc a123
2 bbb dcf b123
3 cc wew3 c7sd
UPDATE employee
SET AttributeValue = AttributeName,
AttributeName = AttributeValue
但是,除非兩列具有完全相同的定義,否則您可能會丟失信息。
Update employee
Set attributeValue = attributeName,
attributeName = attributeValue
update Employee set AttributeValue = AttributeName, AttributeName = AttributeValue
所有以前的技術對於大表來說都很慢,它們移動數據而不是重命名列,這是一個簡單的解決方案:
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";
如果您有鏈接的功能視圖,您必須先備份它們,然后再恢復它們。
這真是個好例子
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;
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
輸出
只需在一次更新中交換兩列:
Update registration
Set AttributeName = AttributeValue ,
AttributeValue = AttributeName where id in (1,2,3)
更新員工 SET AttributeValue = AttributeName, AttributeName = AttributeValue 創建一個臨時列並嘗試代碼更新員工 SET temp= AttributeName 然后再次更新員工 SET AttributeName = AttributeValuee 是不正確的
更新員工 SET AttributeValuee= temp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.