sql - 将带分隔符的条目拆分为 Access 中的新行

标签 sql ms-access vba delimiter

所以有人给了我一个订单电子表格,每个订单的唯一值是 PO,给我电子表格的人很懒惰,决定使用具有多个 PO 的订单,但他们只是用相同的信息将它们分开“/”。所以例如我的 table 看起来像这样

PO             Vendor   State
123456/234567  Bob      KY
345678         Joe      GA
123432/123456  Sue      CA
234234         Mike     CA

我希望使用“/”符号作为分隔符来分隔 PO,所以它看起来像这样。

    PO         Vendor   State
123456         Bob      KY
234567         Bob      KY
345678         Joe      GA
123432         Sue      CA
123456         Sue      CA
234234         Mike     CA

现在我一直在集思广益地想出一些解决这个问题的方法。最终我希望在 Access 中获取这些数据。原始格式的数据在 Excel 中。我想做的是在 Access 中编写一个 vba 函数,我可以将它与 SQL 语句结合使用来分隔值。我现在很挣扎,因为我不确定从哪里开始。

最佳答案

关于这个:

1) 将源数据导入到名为 SourceData 的新 Access 表中。

2) 创建一个新的查询,直接进入SQL View 并添加以下代码:

SELECT * INTO ImportedData
FROM (
  SELECT PO, Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') = 0
  UNION ALL
  SELECT Left(PO, InStr(PO, '/') - 1), Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') > 0
  UNION ALL
  SELECT Mid(PO, InStr(PO, '/') + 1), Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') > 0) AS CleanedUp;

这是 Access 术语中的“生成表”查询(尽管带有嵌套联合查询);相反,对于“附加”查询,将前两行更改为

INSERT INTO ImportedData
SELECT * FROM (

(其余部分不变。)不同之处在于重新运行生成表查询将清除目标表中已有的任何内容,而追加查询将添加到任何现有数据。

3) 运行查询。

关于sql - 将带分隔符的条目拆分为 Access 中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797377/

相关文章:

VBA - 从列表框中删除空项目

sql - 将一个查询的 X 个结果附加到另一个查询的 X 个结果(没有外键连接)

vba - 从 Access 导出不带双引号的 CSV 文件

SQL 查询查找基于日期的数据的本地最大值、最小值

c# - 确定字段是否为 MS Access 中的计算字段

ms-access - 使用 VBA 使用另一个表中的值更新 Access 表

vba - 有没有更快的方法在 Excel 中删除形状

vba - 如何使用VBA创建并写入txt文件

MySQL Join 三个表返回多个结果

sql - 通配符 '%' ,在 ColdFusion cfscript 查询 LIKE 语句中?