请教:SQL语句如何实现同一列里如果与上一行数据相同,则这一行该列数据不显示,但是其他列要照样显示。
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
其实你要做报表使用游标是一个很好的选择。我采用的就是这个方法给你做的,效果一样。不会你再问。望采纳,谢谢!
谢谢。。。不过还是有点复杂
主要思路就是 生成一个id 这个 id 根据第二列分组。 相同的count 会有多个id 依次1.2.3.。。。 所以最后就判断,如果不是1的话 就让它为空 就行了 。
select case when row<>1 then '' end id, count from (
select row_number() over(partiton by count order by count) row,* from tb
) a
恩。谢谢。应该是这样的。
如果有主键这个就好写了,没有主键没有办法弄。
如果有主键的话,要怎么写呢?
你倒是把主键及数据贴出来呀
SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT ID,COUNT FROM 表
不行啊。这个distinct只是根据某一字段去除相同的内容,该重复行后面不重复的内容就不显示了。
sql肯定不是你最终展示给客户看的撒
所以我建议你在程序里展示的时候去做这个处理
比如在页面 循环展示的时候 存储一个变量 当发现本次的值和上次存下来的值不一样 才展示 否则不展示
我这个要做报表。。。所以没有页面。
我不信这个是直接展示给客户看的 不管是页面还是导出excel 都在程序处理
广告 您可能关注的内容 |