Office中国论坛/Access中国论坛

标题: 如何分割查询 [打印本页]

作者: zhao__feng    时间: 2017-4-11 10:09
标题: 如何分割查询
各位老师,有如下表结构(订单号,备注)
订单号              备注
123456             备注1,备注2,备注3

如何查询能得到如下结构
订单号              备注
123456             备注1
123456             备注2
123456             备注3

谢谢
作者: Henry D. Sy    时间: 2017-4-11 11:02
逆透视
作者: zhao__feng    时间: 2017-4-11 13:05
如何操作?请老师指点

作者: Henry D. Sy    时间: 2017-4-11 14:58
zhao__feng 发表于 2017-4-11 13:05
如何操作?请老师指点

传例子
作者: zhao__feng    时间: 2017-4-11 15:04
谢谢老师了,例子已传
作者: Henry D. Sy    时间: 2017-4-11 15:50
zhao__feng 发表于 2017-4-11 15:04
谢谢老师了,例子已传

[attach]61086[/attach]

作者: zhao__feng    时间: 2017-4-11 15:53
谢谢老师
作者: zhao__feng    时间: 2017-4-12 08:08
老师,能用查询实现么?

作者: cgsilicone    时间: 2017-4-13 11:25
可以用查询实现,ACCESS的查询能力超乎想像的强大。
如果备注中的列数固定就非常简单,直接做个联合查询就可以了。(就不举例了)
如果备注中的列数不固定,做个分割函数,再创建最大列数的联合查询就可以了。
具体如下:
SELECT 订单表.订单号, 分割(备注,0) AS 备注1
FROM 订单表 where 分割(备注,0)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,1)
FROM 订单表 where 分割(备注,1)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,2)
FROM 订单表 where 分割(备注,2)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,3)
FROM 订单表 where 分割(备注,3)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,4)
FROM 订单表 where 分割(备注,4)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,5)
FROM 订单表 where 分割(备注,5)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,6)
FROM 订单表 where 分割(备注,6)<>""
UNION ALL SELECT 订单表.订单号, 分割(备注,7)
FROM 订单表 where 分割(备注,7)<>"";

Public Function 分割(待分割数据, 数据所在列数) As String
     数据数组 = Split(待分割数据, ",")
    If 数据所在列数 > UBound(数据数组) Then
        分割 = ""
    Else
        分割 = 数据数组(数据所在列数)
    End If
End Function

作者: zhao__feng    时间: 2017-4-13 11:32
谢谢,十分感谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3