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

表1:sCode编号字段表2:sCode表1的sCode,关联用sQuality品质fNum数量表1:sCode001002003表2:sCode,sQuality,fN... 表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,请高手指导,谢谢!!!
展开
 我来答
匿名用户
2013-07-15
展开全部
你这样做的话 就这两个表是不行的。
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。

如果你是要在程序里实现可以这样:
001,a,10
001,b,10
001,c,10
写到一个DataTable里
然后循环读取行的第二和第三个值
在写到一个字符串里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-15
展开全部
上述要的结果最好是能够在sqlserver数据库里实现,至于如果觉得表结构不合理,也可以自己设计个,但是性质不能改变,一定要是几个相同编号的不同数据合并成一行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-15
展开全部
你的意思是求和吗? select sCode,sum(sQuality),sum(fNum)
from表2 group by sCode
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式