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,请高手指导,谢谢!!! 展开
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,请高手指导,谢谢!!! 展开
4个回答
2013-07-15
展开全部
你这样做的话 就这两个表是不行的。
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。
如果你是要在程序里实现可以这样:
001,a,10
001,b,10
001,c,10
写到一个DataTable里
然后循环读取行的第二和第三个值
在写到一个字符串里
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。
如果你是要在程序里实现可以这样:
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
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)
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)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询