多条记录的同一字段组合成一个字符串

stuff(select ‘,‘ + fieldname  from tablename for xml path(‘‘)),1,1,‘‘)

这一整句的作用是将多行fieldname字段的内容串联起来,用逗号分隔。例如表fieldname-----------AAABBBCCC串联之后就是字符串: AAA,BBB,CCCfor xml path是SQL Server 2005以后版本支持的一种生成XML的方式。具体如何使用,请参考联机丛书。stuff函数的作用是去掉字符串最前面的逗号分隔符。

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

在sql server 2000中只能用函数解决

create table tb(id int, value varchar(10)) 

insert into tb values(1, ‘aa‘

insert into tb values(1, ‘bb‘

insert into tb values(2, ‘aaa‘

insert into tb values(2, ‘bbb‘

insert into tb values(2, ‘ccc‘

go 

--1. 创建处理函数 

CREATE FUNCTION dbo.f_strUnite(@id int

RETURNS varchar(8000) 

AS

BEGIN

    DECLARE @str varchar(8000) 

    SET @str = ‘‘

    SELECT @str = @str + ‘,‘ + value FROM tb WHERE [email protected] 

    RETURN STUFF(@str, 1, 1, ‘‘

END

GO 

-- 调用函数 

SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id 

 

go

 

id          value      

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

1          aa,bb 

2          aaa,bbb,ccc 

 

时间: 2024-10-18 05:02:13

多条记录的同一字段组合成一个字符串的相关文章

mysql 根据某个字段将多条记录的某个字段拼接成一个字段

1 问题 GROUP_CONCAT函数用于将多个字符串连接成一个字符串,在拼接成字符串时就会存在拼接长度的问题,mysql 默认的拼接最大长度为1024 个字节,由于1024个字节会出现不够用的情况,所以有时需要去根据情况进行修改, 使用SHOW VARIABLES LIKE "%group_concat_max_len%"查看 mysql> SHOW VARIABLES LIKE "%group_concat_max_len%"; +------------

JFinal Model判断数据库某条记录的属性字段是否包含空值

如果做报表,一条记录中有空值,使用FreeMarker渲染word会报错,并把错误日志输出到Word中.所以需要之前判断下当前记录中属性值是否有空值. package com.huijiasoft.utils; import java.util.Iterator; import java.util.Set; import java.util.Map.Entry; import com.huijiasoft.model.User; /** * @author pangPython * 数据库工具类

Oracle数据库随机取某条记录的一个字段值

思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE  t ORDER BY DBMS_RANDOM.RANDOM())where rownum < 2;select * from (select t.code from TBIZOPS_CITY t wheret.province_id = '13' ORDER BY DBMS_RANDOM.RANDOM()) where

sql 一条记录多个字段 对应另外一个表 取描述的写法

Users表: 订单表: 现在订单表中,创建人和更新人都是对应于Users表的主键UserID,查询订单时,想显示用户名称 1.先给出自己平时的写法 select o.OrderID, isnull((select top 1 UserName from Users where UserID=o.CreatePeople),'') CreatePeople,--创建人 isnull((select top 1 UserName from Users where UserID=o.UpdatePe

ajaxGird修改一条记录中的字段

var rowData = ajaxgrid.getSelectedRow(); var quality = rowData["quality"]; var rowIndex = rowData["rowIndex"]; var record = ajaxgrid.getRecord(rowIndex); if(quality==111){ record.set("source", "-3"); } 原文地址:https://

Hive 组内计无重复数,追加每条记录后面

今天无意中碰到一个很简单的计算逻辑,但是用hive想了一大会才实现. 示例表数据: 需求逻辑: 给每条记录追加一个字段,用于统计按照p1和p2字段分组后,每个组中的num的数目(去重后的count). 示例结果: Mysql 超级简单的一句: select id, num, p1, p2, count(distinct num) over (PARTITION by p1,p2) as f from test_z; Hive里 会报distinct有问题,去掉的话,明显与要求逻辑不符合啊. 想了

[lua, mysql] 将多条记录数据组合成一条sql插入语句(for mysql)

-- 演示将多条记录数据组合成一条sql插入语句(for mysql) function getTpl0(tname) -- 获取表各个字段 local t = { tpl_pack = {"packId","itemId","`group`","num","rate","rateType"}, } for k, v in pairs(t) do if tname == k then r

获取分组后取某字段最大一条记录

获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from test as b where a.type = b.type );

数据库 UPDATE多条记录不同值,同时UPDATE多个字段

需求 如下两张表student(学生表).score(测试成绩表) 现需要统计:2015-03-10日之后,性别 age=1 的测试成绩的 总分 与 平均分. 要求:使用一个SQL统计score表,将结果更新到student表的score_sum和score_avg字段中. 结果如图: 实现: 如果我们只需要更新一个字段,MYSQL和ORACLE语法是一样的,在 set 后面跟一个子查询即可,如下: UPDATE student D   SET D.score_sum =        (