在SQL中如何把组合字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中如何把组合字段相关的知识,希望对你有一定的参考价值。

当我查询出一个结果之后:
col1 col2 col3
2 3 4
2 3 5
2 3 6
而我想要的结果是:
col1 col2 col3
2 3 4,5,6

请各位大侠解惑

oracle中可以:
select col1,col2,substr(max(sys_connect_by_path(col3,',')),2) col3
(select col1,col2,col3,row_number()over(partition by col1,col2 order by col3) id from 表名)
start with id = 1
connect by prior id = id -1 and prior col1=col1 and prior col2 = col2
group by col1,col2;
***************************
SqlServer中还在研究,抱歉。
---
以上,希望对你有所帮助。
参考技术A CREATE FUNCTION dbo.f_str(@col1 int,@col2 int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE col1=@col1 and col2=@col2
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 调用函数
SELECt col1,col2, col3= dbo.f_str(col1,col2) FROM tb GROUP BY col1
好久没用SQL了,也没安装,所以没有调试过,不知道正确不正确。但希望对你有所帮助
原理就是,先group by 然后 将col3以字符串的形式相加。
参考技术B 在2005中可以用C#自定义聚合函数。或者用临时表 参考技术C 可以通过中间表实现:
通过循环将查询的结果插入的中间表中
参考技术D 到目前位置我所知道的结构化查询语言SLQ还不能直接支持你想要的结果。

以上是关于在SQL中如何把组合字段的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver group by 非聚集多字段组合索引性能慢的问题

在sql server2000中,如何把整型字段转换成字符串型字段?

SQL合并一个表中的字段

SQL SERVER中某个字段属性为varchar,我想把这个字段改成int型,如何操作?

用PHP+mysql查询两个表,然后怎么样把已经查出来的两个数组合并在一起,两张表里有一个相同的字段

如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录?