想要达到效果:
id count
1 1111
2222
3333
2 4444
5555
3 6666
declare @id int,@count char(20)
print 'id'+' '+'count'
declare C_q cursor for
select distinct id from qqq
open C_q
fetch next from C_q into @id
while @@fetch_status=0
begin
print cast(@id as varchar(10))+':'
declare C_ cursor for
select[count] from qqq
where id=@id
open C_
fetch next from C_ into @count
while @@fetch_status=0
begin
print ' '+@count
fetch next from C_ into @count
end
close C_
deallocate C_
print'======================'
fetch next from C_q into @id
end
close C_q
deallocate C_q
其实你要做报表使用游标是一个很好的选择。我采用的就是这个方法给你做的,效果一样。不会你再问。望采纳,谢谢!
追问谢谢。。。不过还是有点复杂
恩。谢谢。应该是这样的。
如果有主键的话,要怎么写呢?
追答你倒是把主键及数据贴出来呀
追问uid(主) id count
1 1 111
2 1 222
3 1 222
4 2 444
5 2 555
6 3 666
(自动增长)
这样的
select (case when not exists(select 1 from 你的表 where id = a.id and uid<a.uid) then cast(id as varchar) else '' end),count
from 你的表 a
其实如果你的id+count的值是唯一的,也可以这样写:
select (case when cnt = 1 then cast(id as varchar) else '' end) as id,count
from
(
select id,count,(select count(*) from 你的表 where id = a.id and count<=a.count) as cnt
from 你的表 a
) aa
恩实现了。。谢谢。
如果我在加一张表。让上面的表和表2关联查询可以吗?
表2:
uid(主) id name
1 1 小麦
2 1 大米
3 1 稻子
4 2 五花肉
5 2 大排
6 3 香蕉
想要这样的结果:
id count name
1 111 小麦
222 大米
333 稻子
2 444 五花肉
555 大排
3 666 香蕉
select (case when not exists(select 1 from 你的表1 where id = a.id and uid<a.uid) then cast(id as varchar) else '' end),a.count,b.name
from 你的表1 a
Join 你的表2 b on a.count = b.count --是这两个字段关联吗?
不行啊。这个distinct只是根据某一字段去除相同的内容,该重复行后面不重复的内容就不显示了。
我这个要做报表。。。所以没有页面。
追答我不信这个是直接展示给客户看的 不管是页面还是导出excel 都在程序处理