MSSQL中的超难问题(不用存储过程实现列行转换)高分求解!!!

举例说明:现有表TABLE1字段1字段2aaaxxxaaayyyaaazzzbbbpppcccqqqcccooo要实现下面的结果如果使用SQL语句字段1字段2aaaxxx... 举例说明:
现有表TABLE1
字段1 字段2
aaa xxx
aaa yyy
aaa zzz
bbb ppp
ccc qqq
ccc ooo
要实现下面的结果 如果使用SQL语句
字段1 字段2
aaa xxx,yyy,zzz
bbb ppp
ccc qqq,ooo

PS:存储过程实现我已经会了,请高手只用SQL语句实现,谢谢~~ 注意:环境是SQL SERVER2000
我想说明的是 , 不使用存储过程,语句越精简越好~~~ 谢谢~
展开
 我来答
c5net
2008-07-31 · TA获得超过322个赞
知道小有建树答主
回答量:829
采纳率:0%
帮助的人:392万
展开全部
分很高,但也懒着一行行写代码了。不用存储过程当然能实现!
楼上的用游标是肯定的,但是没必要创建临时表。我说下过程,你可以自己试:
1、根据字段一排序查询生成游标
2、从游标种取记录,记录字段1的值为最近一次记录的字段1的值,
3、显示字段一值
4、从游标种取下一记录,如果当前字段1值与上一字段一值一样,则在同一行拼字段二的值(中间用逗号隔开),否则另起一行显示字段一值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1d2d2ca5
2008-07-31 · TA获得超过100个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:152万
展开全部
--建立数据表
create table table_1 (c1 varchar(50), c2 varchar(50))
insert into table_1
select 'aaa' ,'xxx'
union select 'aaa' ,'yyy'
union select 'aaa' ,'zzz'
union select 'bbb' ,'ppp'
union select 'ccc' ,'qqq'
union select 'ccc' ,'ooo'

select * from table_1
--执行查询
declare @c1 varchar(50)
declare @c2 varchar(50)
declare @a1 varchar(50)
declare @a2 varchar(50)
DECLARE f_Cursor CURSOR FOR SELECT c1, c2 FROM table_1 order by c1,c2

create table #table (a1 varchar(50),a2 varchar(50))
OPEN f_Cursor
set @a2 = ''
FETCH NEXT FROM f_Cursor into @c1,@c2
set @a1=@c1
WHILE @@FETCH_STATUS = 0
BEGIN
if @a1=@c1
begin
if @a2=''
set @a2=@c2
else
set @a2=@a2 + ',' +@c2
end
else
begin
insert into #table (a1,a2) values (@a1,@a2)
set @a1=@c1
set @a2=@c2
end
FETCH NEXT FROM f_Cursor into @c1,@c2
END
insert into #table (a1,a2) values (@a1,@a2)
CLOSE f_Cursor
DEALLOCATE f_Cursor
select * from #table
drop table #table

--清除数据表
drop table table_1

--=======================
这没用存储过程嘛,字符串连接还要加逗号,你这要求不用游标来循环还真没办法做,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyd963
2008-07-31 · 超过30用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:76万
展开全部
字符串拼接肯定要用到变量,而select中只能对变量赋单个值,所以单一的sql应该是无法完成这样的功能。只能创建临时表,在表中增加自增列,然后用update语句来拼。

这样倒是可以不用游标。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjie_02
2008-07-30 · 超过54用户采纳过TA的回答
知道答主
回答量:280
采纳率:0%
帮助的人:0
展开全部
楼主,你很强!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式