Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教如何得到以下查询结果

Bobo  发表于:2010-01-31 14:42:00  
复制

项目号  分配人
111     aa
111     aa
111     bbb
222     aa
222     bbb
怎么用查询得到
项目号    分配人
111       aa,bbb
222       aa,bbb
有两点注意,第一个是用逗号分开,

还有一个是在项目111里aa会出现2此,但是最后结果只要一个

在线等了。

 

Top
Kevin 发表于:2010-02-01 02:23:13

要直接写SQL来得到你要的结果应该是不可以的, 变通的办法就是写一个自定义函数, 比如

Public Function getperson(strItemNO As String) As String

    dim sql As String

    dim str As String
    Dim rs As Recordset
    sql = "select distinct 分配人 from sql_source where 项目号 = '" & strItemNO & "'"
    Set rs = CodeDb.OpenRecordset(sql)
    rs.MoveFirst
    Do Until rs.EOF
        str = str + rs(0) + ","
        rs.MoveNext
    loop    
    getperson = Left(str, Len(str) - 1)
End Function


然后在查询里面添加这个自定义函数,比如:

SELECT 项目号, getperson(项目号)
FROM 表
GROUP BY 项目号



蒋元根 发表于:2010-02-01 09:02:15
李李 发表于:2010-02-01 11:18:33

学习中!



Kevin 发表于:2010-02-01 13:04:46

2楼的例子把查询写死了,增加内容后,就得不到正确结果..



总记录:4篇  页次:1/1 9 1 :