我有一个像这样设置的表
id (PK) | regID (FK) | fieldID | fieldValue
有多个字段可用于输入数据,这些字段都存储在fieldValue列中。我想要做的是将这些数据迁移到第二个看起来像
的表regID | Name | Occupation | etc | etc
其中列(regID除外)与fieldID相关联。
我首先尝试使用唯一的regID填充新表,然后尝试根据匹配的regID和相应的fieldID更新其余的行信息,但我无法与之相提并论。
然后我尝试了类似
的东西`INSERT INTO newData(regID, pName) VALUES
((SELECT distinct regID FROM fieldData),
(SELECT fieldValue FROM fieldData WHERE fieldID= 14 ORDER BY regID))`
显然不起作用。我仍然认为第一种选择可能是更好的方式,但即便如此,我认为它并不好。任何想法如何让这些数据更有条理?
答案 0 :(得分:0)
您需要使用case based aggregation
以下是使用insert into select
和case based aggregation
INSERT INTO newData(regID, pName, occupation)
select regID,
max(case when filedid=14 then fieldDate end) as pName,
max(case when filedid=15 then fieldDate end) as occupation,
.....
from fieldData
group by regID