访问转换多值字段表

时间:2018-11-27 12:24:09

标签: sql excel ms-access-2016

我已经接管了一个数据库,该数据库的表具有多值字段,例如

Current multi valued field example

我正在尝试将其转换为单值字段表,例如

Desired single value field table

两个表中的数字只是一个ID,指的是一个名为Contact_ID的人。

我已经尝试在使用Crosstab查询的Access和带有Transposed的Excel中做到这一点,但是我无法生成一个新表,其中一个列中包含同一Contact_ID的多个示例,而第二列中却包含唯一关键字。

赞赏有关最佳方法的任何建议。

2 个答案:

答案 0 :(得分:0)

使用未知数量的逗号分隔的字符串,最有可能使用记录集在表上进行迭代,使用TextBlock函数来分隔项目,然后填充另一个记录集,例如:

Split

答案 1 :(得分:0)

多值字段中的值将来自数据库中的表。

要返回单个项目,您需要在查询字段中添加.Value

例如

如果Table1包含ID作为自动编号,并且MyLookUpItems作为单个项目。

| MyLookUpID | MyLookUpField |
|------------|---------------|
| 1          | Alcohol       |
| 2          | Smoking       |
| 3          | diet          |
| 4          | Nutrition     |

Table2包含MyMultiValueField,显示多个值。

| MyMultiValueField |
|-------------------|
| Smoking, diet     |
| Alcohol, diet     |

要退回您要使用的单个项目:

SELECT MyMultiValueField.Value
FROM   Table2  

这将返回:

| MyMultiValueField.Value |
|-------------------------|
| diet                    |
| Smoking                 |
| Alcohol                 |
| diet                    |

然后您可以链接回原始ID:

SELECT MyLookUpID, MyLookUpField
FROM Table2 INNER JOIN Table1 ON Table2.MyMultiValueField.Value = Table1.MyLookUpID  

它将返回:

| MyLookUpID | MyLookUpField |
|------------|---------------|
| 1          | Alcohol       |
| 2          | Smoking       |
| 3          | diet          |  

如果不确定多值字段的来源,请在设计视图中打开表,然后查看该字段的Lookup标签。
Row Source看起来像:

SELECT [Table1].[MyLookUpID], [Table1].[MyLookUpField] FROM Table1 ORDER BY [MyLookUpField]; 

显示Table1是来源。

编辑:
现在,编写了所有这些内容。...只需查看表的设计,并且行源中的表 就是您要查找的单值字段表在您的问题中。