当前位置: 代码迷 >> Sql Server >> 求个游标的例子!该怎么处理
  详细解决方案

求个游标的例子!该怎么处理

热度:32   发布时间:2016-04-27 13:21:55.0
求个游标的例子!
谁给个游标的列子:
1444 1日
1472 1日
1472 2日
1716 1日
1816 1日
想要的结果是把第一列相同的第二列字符串连接在一起


本人刚接触游标,哪里有好的游标的教程能否推荐一个?

------解决方案--------------------
楼主的这个需求不需要游标,方法参考:http://blog.csdn.net/htl258/archive/2009/03/15/3993029.aspx

游标相应实例与用法参考:http://blog.csdn.net/htl258/category/582965.aspx
------解决方案--------------------
SQL code
--不用游标create table test1(equimentid int,errocode varchar(10))insert into test1(equimentid,errocode) values(1,'123')insert into test1(equimentid,errocode) values(1,'43')insert into test1(equimentid,errocode) values(1,'567')insert into test1(equimentid,errocode) values(2,'123')insert into test1(equimentid,errocode) values(2,'563')insert into test1(equimentid,errocode) values(3,'63')create function fn_showstring(@id int)returns varchar(100)asbegin  declare @sql varchar(100)  set @sql=''  select @[email protected]+errocode+',' from test1 where [email protected]  return @sqlendselect equimentid,dbo.fn_showstring(equimentid) errorcode from test1 group by equimentid
------解决方案--------------------
游标使用的例子,供参考:
SQL code
--> 构造测试数据declare @tb table(pname  varchar(50))insert @tb select '电视机' union allselect '电冰箱' union allselect '洗衣机' union allselect '空调' union allselect '微波炉'--> 游标的使用declare my_cursor cursor scroll dynamicforselect pname from  @tbopen my_cursordeclare @pname sysnamefetch next from my_cursor into @pnamewhile(@@fetch_status=0)  begin    print 'Product Name: ' + @pname    fetch next from my_cursor into @pname  endfetch first from my_cursor into @pnameclose my_cursordeallocate my_cursor--> 结果/**Product Name: 电视机Product Name: 电冰箱Product Name: 洗衣机Product Name: 空调Product Name: 微波炉**/
------解决方案--------------------
SQL code
IF OBJECT_ID('tempdb..#temp', 'u') IS NOT NULL    DROP TABLE #tempGOCREATE TABLE #temp(    id INT,    [date] NVARCHAR(10))INSERT #tempselect '1444', N'1日' union allselect '1472', N'1日' union allselect '1472', N'2日' union allselect '1716', N'1日' union allselect '1816', N'1日'GO--SQL:SELECT    id,    [date]=STUFF((SELECT ','+[date] FROM #temp WHERE id=t.id FOR XML PATH('')),1,1,'')FROM #temp tGROUP BY id--RESULT:/*id    date1444    1日1472    1日,2日1716    1日1816    1日*/
  相关解决方案