查询某个分组中多行字段值的拼接字串的方法--access

查询某个分组中多行字段值的拼接字串的方法

先收藏,后面再研究

access的SQL语法中没有自定义函数,也不能象SQL Server中一样用变量、游标、子查询等方法来灵活处理查询语句。 但是,在Access环境中,透过模块中的过程,可利用功能强大的VB语言,生成复杂需求的查询语句。 下面是本人今天在Access版块中的一个回复,以此例

access的SQL语法中没有自定义函数,也不能象SQL Server中一样用变量、游标、子查询等方法来灵活处理查询语句。

  但是,在Access环境中,透过模块中的过程,可利用功能强大的VB语言,生成复杂需求的查询语句。

   下面是本人今天在Access版块中的一个回复,以此例子,简单说明Access依托VB所蕴含的强大功能。

  网友提问:   

  --------------------------------------------------------------------------------

   我在ACCESS里面的表如下:

   comname   name   sex

   1公司     小王 男  

   1公司     小李 女  

   2公司     小张 男  

   我想将同公司的内容合在一起如:

  comname   name      sex   

  1公司    小王,小李  男,女  

  2公司    小张     男    

  请问我在ACCESS里面该如可操作?请问有什么好的方法去处理??

  --------------------------------------------------------------------------------

  解答:

  ----------------------------------------------------------------------------------

  在 access的模块中建立一个自定义函数:

Public Function CombStr(TableName As String, FieldName As String, GroupField As String, GroupValue As String) As String
  Dim ResultStr As String
  Dim rs As Recordset
  Set rs = CurrentDb.OpenRecordset(" select " & FieldName & " from " & TableName & " where " & GroupField & "=‘" & GroupValue & "‘")
  If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    ResultStr = ResultStr & "," & rs.Fields(0).Value
    rs.MoveNext
  Loop
  End If
  If ResultStr <> "" Then ResultStr = Mid(ResultStr, 2)
  CombStr = ResultStr
  
End Function

  建立查询:

SELECT T.comname, combstr("T","Name","comname",t.comname) AS CombName, combstr("T","ses","comname",t.comname) AS CombSex
FROM T
GROUP BY T.comname

时间: 2024-10-13 12:51:46

查询某个分组中多行字段值的拼接字串的方法--access的相关文章

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

最近操作数据库,需要判断返回的字段值是否为空,在网上收集了3种方法供大家参考 1 通过System.DBNull判断,网上大部分都使用这个方法. 复制代码代码如下: DataTable dt;                               //假设字段为name, dt已经保存了数据dt.rows[0]["name"] == System.DBNull.Value;  //判断第一行数据的name字段是否为空 2 通过IsNull判断 复制代码代码如下: DataTabl

使用LINQ获取List列表中的某个字段值

使用LINQ获取列表中的某个字段值,下面以获取员工列表中的编号字段为例子. 1.使用Select方法 1 List<Emplayee> emplayeeList = GetEmplayeeList(); //获取员工信息列表 2 int[] empIds = emplayeeList.Select(a => a.Id).ToArray(); //获取员工编号数组 2.使用ForEach方法 1 List<Emplayee> emplayeeList = GetEmplayee

查询Oracle 数据库中带有lob字段的某一个表的大小

注意:由于lob字段有独立的lob segment来存储,故对于带有lob字段的表,不能仅仅查询dba_segments. 以下脚本来自: How to Compute the Size of a Table containing Outline CLOBs and BLOBs[Article ID 118531.1] 经过修改:改为了NVL(SUM(S.BYTES),0) SQL> col "TOTAL TABLE SIZE" format 99999999999999 ---

使用pivot和聚合函数将表中的行的值转为列产生新的表

原表格:V_ChannelReward结构为: select * from V_ChannelReward pivot (max(RewardSum) for RewardItem in ([星级奖励],[自建空充酬金],[首充酬金],[BOSS待办酬金],[激活酬金],[神州行上网套餐拓展酬金],[其他],[新增客户与裸机捆绑销售],[实名登记酬金],[宽带业务酬金],[2G渠道体系酬金],[3G渠道体系酬金],[数据业务酬金],[开户激励酬金],[开户基础酬金],[在网酬金],[维系酬金],

5:查询两表中的所有字段,满足性别为‘男’的记录(使用语句块)

5:查询两表中的所有字段,满足性别为'男'的记录 1.先创建表t_code_sex 2.创建表t_employee 3.编辑数据 4.执行pl/sql语句块 ---pl/sql语句块查询满足性别为男的 declare type t_employee_record_type is record( v_empid t_employee.emp_id%type, v_emp_name t_employee.emp_name%type, v_sex_name t_code_sex.name%type);

C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法

原文:C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法 本人新手,在.Net中写WebAPI的时候,当接口返回的json数据含有日期时间类型的字段时,总是在日期和时间中夹着一个字母T:微软这么设置可能有其内在的初衷,但是对于我来说,这样的格式不是很方便,前端同学展示出来的时候也总是要记得处理一下显示格式.曾经问过部门内一位老鸟,老鸟的反应告诉我这在微软的框架下做json转换是不可避免的:当初一度放弃了这个问题.后来突然冷静分析了一下,微软不可能做

@有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不

@有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特殊字符 举例1:(2) stringsql ="update Table1 set name [email protected] where ID = '1'";//未采用SqlParameter SqlParameter sp =newSqlParameter("@name&q

GridView控件RowDataBound事件中获取列字段值的几种途径 !!!

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onclick", "javascript:alert('当前ID为:" +DataBinder.Eval(e.Row.DataItem,"CID"

GridView控件RowDataBound事件中获取列字段值的几种途径

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onclick", "javascript:alert('当前ID为:" +DataBinder.Eval(e.Row.DataItem,"CID"