我在员工表A中有以下数据:
ID | emp | City_Type | City
1 | 101 | Z | Tokyo
2 | 101 | Y | New York
City_Type
可以是Y或Z.Y是这个人出生的城市,Z是他/她现在居住的城市。
我需要把它们放在一个表'B'中,看起来像下面这样:
ID | emp | Current_City | Birth_City
所以最后,表B必须像这样填充:
ID | emp | Current_City | Birth_City
1 | 101 | Tokyo | New York
(在某些情况下,2中的一个可以为空/ null)
有关如何执行此操作的任何建议?我自己也找不到太多关于此的信息。
答案 0 :(得分:1)
我使用PIVOT TABLE进行了练习(使用sql-server):
select emp, Z 'Current_City' , Y 'Birth_City' from
(
select emp,City_Type, City from TABLE__A
) x
pivot
(
max(City) FOR City_Type in (Z,Y)
) AS PivotTable
低于获得的结果,其中示例为Current_City
字段的NULL值emp Current_City Birth_City
101 Tokyo New York
102 NULL London
我省略了ID,从请求中不清楚是否需要添加(最小值,最大值为emp,或者是新计算的还是由于TABLE__B中的INSERT)
此前一个查询可用于插入TABLE__B
INSERT INTO [TABLE__B]
([emp]
,[Current_City]
,[Birth_City])
...
答案 1 :(得分:1)
首先创建你的TableB并用空值填充[Current_City]和[Birth_City],但要确保[emp]在那里并且它包含你想要修改的所有员工。
然后运行此SQL修改以适合您的数据库/模式/表名/ etc:
update TableB
set Current_City = (select City
from TableA
where TableA.City_Type ='Z'
and TableA.emp = TableB.emp),
Birth_City = (select City
from TableA
where TableA.City_Type ='Y'
and TableA.emp = TableB.emp)
答案 2 :(得分:0)
一种方法是使用PIVOT转换。