按照指定格式显示数据表数据

表结构和数据如下所示:

 id          dName
----------- -----
1           a
4           a
2           b
3           b
5           c
6           c

要求使用一条查询语句查询出如下效果:

编号      列名  出现次数
------    ----  ---------
1           a       2
4           a       2
2           b       2
3           b       2
5           c       2
6           c       2

苦思许久,没结果,就写了个大致游标实现的方法,完善后如下

create function fun_show()
returns @tab table
(
 列a int,
 列b char(1),
 列c int
)
as
begin
 declare myCursor cursor for select dName from DBTable group by dName
 open myCursor
 declare @name char(1)
 fetch next from myCursor into @name
 while(@@fetch_status=0)
 begin
  declare @count int
  --求的数量
  select @count=count(*) from DBTable where
dName=@name
  declare myCur cursor for select id from DBTable where dName=@name
  open myCur
  declare @id int
  fetch next from myCur into @id
  while(@@fetch_status=0)
  begin
   insert into @tab values(@id,@name,@count)
   fetch next from myCur into @id
  end
  close myCur
  deallocate myCur
  fetch next from myCursor into @name
 end
 close myCursor
 deallocate myCursor
 return
end

烦请高人帮忙完善查询实现。谢谢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值