求个查询(50)

  • 主题发起人 主题发起人 cb1997
  • 开始时间 开始时间
C

cb1997

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构如下:名称 行数 列数AA 1 2BB 1 3cc 2 1DD 2 3EE 3 2FF 4 3现在我想将行数为1 的 查出来结果写成 AABB现在我想将行数为2 的 查出来结果写成 ccdd现在我想将行数为3 的 查出来结果写成 EE现在我想将行数为4 的 查出来结果写成 FFSql如何写哦?
 
如果行数为1的记录数有100条,是不是要把这100条记录的名称相合并?SQL查询数据结果中,字段类型应该是固定的,你的这种查询,通过SQL语句没法实现。除非你的行数相同的记录,最多只有2条。还有,你用的数据库类型也没说明一下。以前好像见过有人为这种情况专们写存储过程来实现的。
 
呵呵,楼上insert into #test 的那个地方,需要更改一下吧,要不然原表有10条记录,通过你的这个过程,查询出来的还是10条。思路值得我向你学习!
 
楼上的都是高手。
 
简单,写个存储过程。用游标就行了.瞎写了一个,原理大概就是这样的。create proc test as begincreate table #test ( name1 varchar(1000),rowcnt int,colcnt int)DECLARE B CURSOR FOR select name1,rowcnt from table1 order by rowcnt asc declare @str varchar(1000) declare @name1 varchar(1000) declare @a1 int declare @a2 int open b set @str='' FETCH NEXT FROM b into @name1,@a1 WHILE @@FETCH_STATUS = 0 BEGIN if @a1<>@a2 begin insert into #test (name,rowcnt) values(@str,@a1) set @str = '' end else begin set @Str = @str+@ne1 end --insert into #test (name,rowcnt) values(@str,@a1) set @a2=@a1 FETCH NEXT FROM b into @name1,@a1 END CLOSE b dEALLOCATE b select * from #testend
 
谢谢高手
 
后退
顶部