SQL2000,列1,列2是组合主键
列1 列2
1 a
1 b
1 c
2 aa
2 bb
2 c
3 a
....
想要结果:
1 a,b,c
2 aa,bb,c
3 a
...
看论坛里语句,报错:xml 附近有语法错误
select 列1,
aaa= stuff((select ' '+列2 from t1 where s.列1=列1 for xml path('')),1,1,'')
from t1 s
group by 列1
应该怎么实现?谢谢!
列1 列2
1 a
1 b
1 c
2 aa
2 bb
2 c
3 a
....
想要结果:
1 a,b,c
2 aa,bb,c
3 a
...
看论坛里语句,报错:xml 附近有语法错误
select 列1,
aaa= stuff((select ' '+列2 from t1 where s.列1=列1 for xml path('')),1,1,'')
from t1 s
group by 列1
应该怎么实现?谢谢!
解决方案 »
- 帮忙解释一下下面游标的含义。
- 怎样在text类型的字段数据中再添加新数据?(例如该字段的数据原先是一句话,现在想在该话后再补充一句话)
- 求这个存储过程的写法
- 用.net中的cmd.ExecuteScalar访问数据库出现异常,怎样知道是什么错误?
- 看看这个查询sql语句怎么写
- 关于ODBC的问题
- SQL SERVER 7.0 到 SQL SERVER 2000的问题,高分求教?
- 请问如何把SQLServer7中的数据通过DTS导入到SQLServer2000中?
- 如何用sql语句在服务器端建立一存储过程及在vb中如何调用.....急!!!!
- 并发访问问题?只求得到一个回是与否的回答?
- sql server存储过程赋值问题
- 困扰我好多天的问题,求帮忙解决
/*
工单号 操作者
a1 张三
a1 王二
a1 李四现在要得到查询结果:
工单号 操作者
a1 张三、王二、李四
*/IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[test1]') AND type in (N'U'))
DROP TABLE [dbo].[test1]
GOCREATE TABLE [dbo].[test1](
工单号 [varchar](10) NOT NULL,
操作者 [varchar](10) NOT NULL
) ON [PRIMARY]GOINSERT [test1]
VALUES ('a1','张三'),('a1','王二'),('a1','李四')select 工单号,
操作者=stuff((select '、'+操作者
from test1
where 工单号=t.工单号
for xml path('')),1,1,'')
from test1 t
group by 工单号DECLARE @s VARCHAR(4000)
SELECT @s=@s +'、'+操作者 from test1 WHERE 工单号='a1'
PRINT @s
SET @s=STUFF(@s,1,1,'')
EXEC('select 工单号,'+@s+' FROM test1')
IF OBJECT_ID('dbo.fn_merger', 'FN') IS NOT NULL
DROP FUNCTION dbo.fn_merger
GO
CREATE FUNCTION fn_merger(@id INT)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @rv NVARCHAR(MAX)
SET @rv = N''
SELECT @rv = @rv + ',' + [name] FROM dbo.temp WHERE id = @id
RETURN STUFF(@rv,1,1,'')
END
GO
--TEST:
SELECT
id,
[name] = dbo.fn_merger(id)
FROM temp
GROUP BY id
须sql2005及其以上版本了
create function dbo.f_str(@id int) returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + cast(value as varchar) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return @str
end
go--调用函数
select id , value = dbo.f_str(id) from tb group by id