1

我继承了一个遗留的 ms 访问数据库。我有一张包含 30 个类似信息字段的表格。

JobID CityM1 StateM1 CityM2 StateM2 CityM3 StateM3 CityP1 StateP1 CityP2 StateP2.........

我想要做的是将信息减少到以下字段:

JobID.....描述(M或P)......城市......州

如何使用 SQL 将所有相关字段中的数据插入到新的表格格式中。感谢您的任何建议。

4

1 回答 1

4

可能我会做以下事情:

如果旧表是 jobs_old(....) 而新表是 jobs_new(jobid, city, state, description),则主键可以是 jobid 和 city 或 jobid、city 和 state,如果城市名称在每个表中不是唯一的状态。您可能有一些其他列可以根据规范化形式进行唯一化。

然后,我将执行一系列 INSERT INTO jobs_new ... SELECT...FROM jobs_old,通过从旧表中的适当列中选择数据来将数据填充到新表中。例子:

INSERT INTO jobs_new(jobid, city, state, description) 
SELECT jobid, CityM1, StateM1, 'M' FROM jobs_old;

INSERT INTO jobs_new(jobid, city, state, description) 
SELECT jobid, CityM2, StateM2, 'M' FROM jobs_old;

...

INSERT INTO jobs_new(jobid, city, state, description) 
SELECT jobid, CityP1, StateP2, 'P' FROM jobs_old;

...

请注意,我希望语句语法在 MSACCESS 中被接受!否则,您必须使用其他技术。

表定义可能如下(使用 MS SQL 服务器的 sqlcmd 工具):

1> CREATE TABLE jobs_new (jobid INT NOT NULL,
2> city VARCHAR(50) NOT NULL, state CHAR(2) NOT NULL,
3> description CHAR(1) NOT NULL,
4> PRIMARY KEY(jobid, city, state)
5> );
6> go
1>

根据您的要求为列使用适当的数据类型,并根据需要更改主键列。

于 2013-09-20T01:28:53.310 回答