我试图获取一个表,并在Microsoft2016Access中使用SQL将单个列卸载为多个行。是逗号分隔的。
SELECT BOGO_Sale.Summary, BOGO_Sale.issue_key, BOGO_Sale.promo_name, BOGO_Sale.promo_parent_sku_names, BOGO_Sale.promo_parent_skus
FROM BOGO_Sale;我试着添加Unnest,并不断得到错误,也许我遗漏了什么。
这个BOGO_Sale.promo_parent_skus是我唯一想要解嵌套成行的列。
该表的一个例子是:

下面是一个示例,说明我希望SQL查询将数据转换为:

来自我的源系统的数据是这样来的(说来话长),所以我只需要转换它,这样我就可以做其他的分析和工作了。
我使用的Microsoft版本是Office365 ProPlus Access 2016 32位。
发布于 2020-02-05 22:53:10
unnest不存在于MS访问SQL中。
要在MS Access中实现这一点,您可能需要使用VBA 拆分函数将promo_parent_skus字段的内容转换为数组,并构建包含结果的输出表。
类似于:
Function ParseBOGO()
Dim dbs As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim sku
Dim fld As Field
Set dbs = CurrentDb
dbs.Execute "select t.* into BOGO_Output from BOGO_Sale t where false"
Set rs1 = dbs.OpenRecordset("bogo_sale")
Set rs2 = dbs.OpenRecordset("bogo_output")
If Not rs1.EOF Then
rs1.MoveFirst
Do Until rs1.EOF
For Each sku In Split(rs1!promo_parent_skus, ",")
rs2.AddNew
For Each fld In rs1.Fields
rs2.Fields(fld.Name) = fld.Value
Next fld
rs2!promo_parent_skus = sku
rs2.Update
Next sku
rs1.MoveNext
Loop
End If
rs2.Close
rs1.Close
End Function上面的内容将生成一个名为BOGO_Output的新表。
https://stackoverflow.com/questions/60085054
复制相似问题