Access交流中心

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

[求助]另类查询,如何写?

王三平  发表于:2008-08-29 13:56:47  
复制

另类查询,如何写?具体要求如下

 

表名:tblGxdMx

数据:

合同号,付款,库点

08001 10000 A库

08001 21000 B库

08001 1000  A库

08002 34000 C库

08002 10000 B库

 

查询后的显示效果

合同号 付款  库点

08001  32000 A库、B库

08002  34000 C库、B库

 

 

 

Top
王三平 发表于:2008-08-29 14:06:52

修改一下,查询后的显示效果是

合同号 付款     库点

08001  32000    A库、B库

08002  44000    C库、B库



竹笛 发表于:2008-08-29 16:53:47
王三平 发表于:2008-08-29 17:45:06

我想楼上误会我的意思,特贴上数据附件,我想达到的效果是,付款合计数,库点合并显示。请见那个想达到效果的表。

附件:

点击下载此附件

蒋元根 发表于:2008-08-29 19:39:12

 给你做了个例子,不知道是否符合你的要求.

点击下载此附件

王三平 发表于:2008-08-29 22:50:20

首先谢谢楼上抽出宝贵的时间来答复我的问题。

我想补充说明的是
记录数很多,库点有30多个,是不确定。如果按你的方法,好象比较麻烦,当库点为3个以上,又得重新写查询。这个不现实。

 

请提供更好的思路,谢谢!



朱亦文 发表于:2009-02-15 00:57:51
合同
ID 合同号 付款 库点
1 8001 10000 A库
2 8001 21000 B库
3 8001 1000 A库
4 8002 34000 C库
5 8002 10000 B库

 

新建VBA函数:

Public Function 获取仓库(ByVal 合同号) As String
    Dim oRs As New ADODB.Recordset
    Dim strSQL As String
    Dim ret As String
   
    strSQL = "SELECT DISTINCT 合同.库点 FROM 合同 WHERE 合同号='" & 合同号 & "'"
    Set oRs = CurrentProject.Connection.Execute(strSQL)
    ret = oRs.GetString(, , , ",")
    If Right(ret, 1) = "," Then ret = Left(ret, Len(ret) - 1)
    获取仓库 = ret
    oRs.Close
    Set oRs = Nothing
End Function

再建一汇总查询:

SELECT 合同号, Sum(付款) AS 总付款, 获取仓库(合同号) AS 仓库
FROM 合同
GROUP BY 合同号, 获取仓库(合同号);

运行查询的结果:

汇总
合同号 总付款 仓库
8001 32000 A库,B库
8002 44000 B库,C库



蒋元根 发表于:2009-02-15 08:28:32

谢谢朱亦文老师,使我学习到了新的知识,根据朱亦文老师的答案,我学习修改了.

点击下载此附件

江苏笨笨 发表于:2009-10-08 15:55:47

    ret = oRs.GetString(, , , ",")----------如何理解?谢谢
    If Right(ret, 1) = "," Then ret = Left(ret, Len(ret) - 1)

 



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