毛毛公馆 发表于:2016-06-04 11:16:05
有两个表
1.公司表,记录如下:
公司编号 客户列表
g1 c1
g2 c2,c3
2.客户表,记录如下
客户编号 客户名称
c1 客户1
c2 客户2
c3 客户3
说明:公司表 的 客户列表字段值 可能由客户表的 一个或多个主键构成,逗号间隔。
sql语句如何写才能返回如下结果
公司编号 客户名称
g1 客户1
g2 客户2,客户3
谢谢。
SELECT A.公司编号, IIf(Left([a客户名称],1)="C",'客户' & Mid([a客户名称],2,1) & "" & IIf(InStrRev([a客户名称],",")>0, "," & IIf(Mid([a客户名称],InStrRev([a客户名称],",")+1,1)="C","客户" & Mid([a客户名称],InStrRev([a客户名称],",")+2),Null))) AS 客户名称
FROM [SELECT 表1.公司编号, 表1.客户列表 AS a客户名称
FROM 表1]. AS A;
在模块中自定义如下函数:
Function myReplace(ByVal inPutStr As String) As String
Dim A
Dim i
Dim str
A = Split(Nz(inPutStr), ",")
If Len(inPutStr) > 0 Then
For i = 0 To UBound(A)
str = str & "," & DLookup("客户名称", "客户表", "客户编号='" & A(i) & "'")
Next i
myReplace = Mid(str, 2)
Else
myReplace = ""
End If
End Function
然后创建如下查询:
SELECT 公司表.公司编号, myReplace([客户列表]) AS 客户名称 FROM 公司表
点击下载此附件
总记录:2篇 页次:1/1 9 1 :