这是我建立的视图其中字段的数据imgdz是不同的我想把两条合并成一条imgdz字段里面的数据为两条记录用逗号隔开请问怎么做到
解决方案 »
- vc 连接 sql server 数据库 连接字符串
- 存储过程中的变量处理问题
- 有谁手头有《数据库系统概论》(绿皮的,第三版,萨师煊,王珊),进来看个关于连接的问题
- 绝对有挑战的查询,请高人指导
- 执行xp_cmdshell时发生错误。。。。。。。。。。
- SQL 去除重复记录,大哥大姐们帮忙啊
- SQL2000~~~所有的数据已经清空,为什么DATE文件大小不变~~~~
- 数据库连搪
- 菜鸟提问,SQL安装程序配置服务器失败。总也装不上SQL。我用的是winxp专业版。不会是系统问题吧。急急急!
- 一张sql的成绩表,查询各科成绩前两名(考虑并列)
- sql server 2005 怎么判断列为自增
- 2个表的数据合并成1个表
--*******************************************************************************************
表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc 需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加) 1. 旧的解决方法(在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 id=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_strUnite
go
/*
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/
--===================================================================================
2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)
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
-- 查询处理
SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY(
SELECT [values]= STUFF(REPLACE(REPLACE(
(
SELECT value FROM tb N
WHERE id = A.id
FOR XML AUTO
), ' <N value="', ','), '"/>', ''), 1, 1, '')
)N
drop table tb /*
id values
----------- -----------
1 aa,bb
2 aaa,bbb,ccc (2 行受影响)
*/ --SQL2005中的方法2
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 select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')
from tb
group by id /*
id values
----------- --------------------
1 aa,bb
2 aaa,bbb,ccc (2 row(s) affected) */
from View_4
group by ID我这样可以查出来了 但是只有ID和imgdz的字段 要怎么查询全部字段啊
from View_4
group by ID, 你要显示的列
--查询你要显示的列,然后再分组
ID,col1,col2...,[imgdz]=stuff((select ','+[imgdz] from View_4 t where ID=View_4.ID for xml path('')), 1, 1, '')
from
View_4
group by
ID, col1,col2...
insert into tb values(1, '张三','语文')
insert into tb values(1, '张三','数学')
insert into tb values(1, '张三','历史')
insert into tb values(2, '李四','语文')
insert into tb values(2, '李四','数学')
goselect * from tbselect tb.* from (
select fid,fname,(select fsubject+';' from tb where t.fid=fid order by fid for xml path('')) list
from tb t
group by fid,fname) tb
1 张三 语文
1 张三 数学
1 张三 历史
2 李四 语文
2 李四 数学
1 张三 语文;数学;历史;
2 李四 语文;数学;