请教一个SQL语句

在sql2005中,我有这样一个表
字段1 字段2 字段3
a 1 2
a 3 4
b 5 6
b 7 8
c 9 0
请问要怎么才能使我得到以下查询结果
字段1 字段2
a 1234
b 5678
c 90
请高人指教,谢谢

第1个回答  2009-09-06
标准答案来了: 直接在运行就出来你的效果了 让你们看看什么是标准答案 菜鸟们

--搭建测试环境
CREATE TABLE [dbo].[a](
[a] [varchar](3) COLLATE Chinese_PRC_CI_AS NULL,
[b] [int] NULL,
[c] [int] NULL
) ON [PRIMARY]
--插入测试数据

insert into a values('a',1,2)
insert into a values('a',3,4)
insert into a values('b',1,2)
insert into a values('c',1,2)
insert into a values('c',4,5)
insert into a values('c',13,2)

select * from a
--开始进行

declare @a varchar(10)--定义@a 取 a的值
declare @b varchar(10)--定义@b 取 b的值
declare @huizong varchar(max)
set @huizong=''

--创建临时表 存放数据
create table #table (a varchar(2),b varchar(30))

--开始查询
declare tongji cursor for --定义游标 tongji 取 a的值
select distinct a
from a

open tongji --打开游标
fetch next from tongji into @a --将a的值赋值给@a
while @@fetch_status=0
begin

declare huizong cursor for --定义游标 @huizong
select convert(varchar(10),b)+','+convert(varchar(10),c)
from a
where a=@a

open huizong
fetch next from huizong into @b --将b的值赋值给@b
while @@fetch_status=0
begin

set @huizong=@huizong+convert(varchar(10),@b)+','

fetch next from huizong into @b
end
insert into #table values(@a,@huizong)
set @huizong=''--重置汇总
close huizong --关闭汇总游标
deallocate huizong --释放游标

fetch next from tongji into @a
end
close tongji
deallocate tongji

--查询结果

select a ,left(b,len(b)-1) from #table

--删除临行表
drop table #table
drop table a
第2个回答  2009-09-03
一句话貌似是不行了,用游标吧,代码如下
declare @t table(字段1 varchar(20),字段2 varchar(20))
declare @z1 varchar(20),@z2 varchar(20)
declare d cursor fast_forward for select 字段1,cast(字段1 as varchar(2))+cast(字段2 as varchar(2)) from 表 order by 字段1,字段2
open d
fetch next from d into @z1,@z2
while @@fetch_status=0
begin
if exists (select * from @t where 字段1=@z1)
update babies set 字段2=isNull(字段2,'')+@z2 where 字段1=@z1
else
insert into @t values(@z1,@z2)
fetch next from d into @z1,@z2
end
close d
deallocate d
select * from @t order by 字段1本回答被网友采纳
第3个回答  2009-09-03
SELECT *

FROM(

SELECT DISTINCT

字段1
FROM table

)A

OUTER APPLY(

SELECT

[values]= STUFF(REPLACE(REPLACE(

(

SELECT 字段2 FROM table N

WHERE 字段1 = A.字段1

FOR XML AUTO

), '<N 字段2="', ' '), '"/>', ''), 1, 1, '')

)N
第4个回答  2009-09-03
先select 字段1,(字段2+字段3)as 字段2 from table
得到
字段1 字段2
a 12
a 34
b 56
b 78
c 90

然后用for xml 可以达到你的要求 你可以查询下试试
第5个回答  2009-09-03
http://zhidao.baidu.com/question/114981597.html

这个人的问题跟你的一样,你可以参考一下。
相似回答