SQL语句怎么实现几列数据合并成一行??

表1:
sCode 编号字段

表2:
sCode 表1的sCode,关联用
sQuality 品质
fNum 数量

表1:
sCode
001
002
003

表2:
sCode,sQuality,fNum
001 a 10
001 b 15
001 c 20
002 a 10
002 b 90
002 c 80

最后结果为:
001,a,10,b,15,c,20
002,a,10,b,90,c,80

执行结果就要把三条001和三条002的数据各合并成一条,请高手指教!!!
问题补充:表结构应该没问题,只要能实现出最后的结果就可以,用的数据库是sqlserver,请高手指导,谢谢!!!

第1个回答  2013-07-15
你这样做的话 就这两个表是不行的。
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。

如果你是要在程序里实现可以这样:
001,a,10
001,b,10
001,c,10
写到一个DataTable里
然后循环读取行的第二和第三个值
在写到一个字符串里
第2个回答  2013-07-15
上述要的结果最好是能够在sqlserver数据库里实现,至于如果觉得表结构不合理,也可以自己设计个,但是性质不能改变,一定要是几个相同编号的不同数据合并成一行。
第3个回答  2013-07-15
你的意思是求和吗? select sCode,sum(sQuality),sum(fNum)
from表2 group by sCode
第4个回答  2013-07-15
declare @sqlstr varchar (2000),@sQuality varchar (50),@iLoop int
select @sqlstr=''
select @iLoop=1
Declare ItemList
Cursor for select sQuality from table2 group by sQuality
Open ItemList
Fetch next from ItemList into @sQuality
while @@Fetch_STATUS=0
BEGIN
select @sqlstr=isnull(@sqlstr,'')+ ',(select top 1 sQuality from table2 where a.scode=scode and sQuality='''+isnull(@sQuality,'')+''' group by sQuality) Item'+cast(@iLoop as varchar) +
',(select fnum from table2 where a.scode=scode and sQuality='''+isnull(@sQuality,'')+''' group by fnum) ItemNum'+cast(@iLoop as varchar)
select @iLoop=@iLoop+1
Fetch next from ItemList into @sQuality
END
close ItemList
DEALLOCATE ItemList
select @sqlstr= 'select scode' +isnull(@sqlstr,'') + ' from table2 a where scode in (select scode from table1) group by scode'
Exec (@sqlstr)本回答被网友采纳
相似回答