Office中国论坛/Access中国论坛

标题: 求一个SQL语句 [打印本页]

作者: cc.man    时间: 2009-9-29 17:04
标题: 求一个SQL语句
请教一个SQL语句

比如我有一个表,两个字段
字段1  字段2
10      A
10      B
10      C
20      A
20      D
30      B

能不能写一个SQL,得到下面的结果
字段1  字段2
10      ABC
20      AD
30      B

就是说,把字段1相同的记录中的字段2合并
先谢谢了。
作者: redstone    时间: 2009-9-29 17:46
这个恐怕要用VBA吧, SQL貌似无法实现
作者: liwen    时间: 2009-9-29 19:27
通过三个查询:第一个查询生成根据字段1的分类序号类似B: SELECT A.字段1, A.字段2, "列" & DCount("[字段2]","A","[字段1]='" & [字段1] & "'and [字段2]<='" & [字段2] & "'") AS 列
FROM A;

第二个用交叉表查询C: TRANSFORM Last(B.字段2) AS 字段2之最后一条记录
SELECT B.字段1
FROM B
GROUP BY B.字段1
PIVOT B.列;

第三个将交叉表查询合并:SELECT C.字段1, [列1] & [列2] & [列3] AS 字段2
FROM C;
作者: koutx    时间: 2009-9-29 20:22
附件是一个在查询中调用函数来实现的方法
[attach]39806[/attach]
作者: fnsmydyang    时间: 2009-9-29 21:04
有这样的函数,我来学习一下,谢谢分享.
作者: todaynew    时间: 2009-9-30 08:44
Function Mystr(myval) As String
Dim rs As New ADODB.Recordset
Dim ssql As String
ssql = "select * from 表1 where 字段1=" & myval
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Mystr = ""
For i = 1 To rs.RecordCount
    Mystr = Mystr & rs("字段2")
    rs.MoveNext
Next
rs.Close
End Function


SELECT 表1.字段1, Mystr([字段1]) AS 字段2
FROM 表1
GROUP BY 表1.字段1;
作者: cc.man    时间: 2009-9-30 09:38
想了一晚上,觉得没希望,打算用GetString一个个地取值,没想到高手们还真是会者不难。
todaynew和koutx差不多,todaynew的更简单一点点。不过我还想试试用GetString能不能更简单。
版主的答复应该是最对题的,可是我试到第二步就不行了,对不起版主了。不过还是大概猜到了一点版主的想法。

顺便问一下,有没有什么资料能学习一下,提高一下查询或者SQL得水平的。

多谢各位指教。
作者: rower    时间: 2009-11-24 19:58
顶一个先!




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