想要达到效果:
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 都在程序处理
请教:SQL语句如何实现同一列里如果与上一行数据相同,则这一行该列数据...
deallocate C_q 其实你要做报表使用游标是一个很好的选择。我采用的就是这个方法给你做的,效果一样。不会你再问。望采纳,谢谢!
用sql语句实现在同一张表中找到1个字段相同,另1个字段不同的记录
oracle数据库中后者可以用wmsys.wm_concat实现,具体sql如下:select 字段1, wmsys.wm_concat(字段2) from 表group by 字段1 追问 #1305 - FUNCTION wmsys.wm_concat does not exist 出现这个错误 追答 厄,目测你这是SQL SERVER如果有其它列做标识,可以用在子查询中使用union来连接如果没有标识,只好用存储过程...
用sql语句实现在同一张表中找到1个字段相同,另1个字段不同的记录
select distinct x.字段一,x.字段二 from a as x,a as Y where x.字段一=y.字段一 and x.字段二!=y.字段二 其中,x和y是a表的别称,这个原来是用来查询至少选修两门课程的学生,我改成了这样,也就意味着查询结果可能有多个,因为万一有三个,他们之间就是两两不相同的,也符合这个条件 ...
SQL 语句 查询指定字段相同的只显示一条单据
可以通过分组来实现去除重复行,distinct是对查询结果后的去重,效率很低,不建议使用,你想要根据某个字段去除重复行,就必须明白对其他行进行什么样的聚合,比如说学生成绩表,你想查看每个班级的平均分数,那么就应该对学生的成绩做sum()聚合,然后根据班级来分组,现在你想对orderno做分组,就要考虑清...
sql重复数据只取一条记录
1、SQL SELECT DISTINCT 语句 在表中,可能会包含重复值。这并不成问题,不过,仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。语法:SELECT DISTINCT 列名称 FROM 表名称 使用 DISTINCT 关键词 SELECT DISTINCT Company FROM Orders 2、子查询限制返回结果 SELECT * FROM Test...
sql查询语句,怎样查询重复数据
sql SELECT 列名, COUNT FROM 表名 GROUP BY 列名 HAVING COUNT > 1;在上面的查询中,我们选择了可能含有重复数据的列进行分组,并使用COUNT函数来计算每个组的记录数。然后,HAVING子句帮助我们过滤出那些记录数大于1的组,即找到了重复的数据。通过这种方式,我们可以轻松地使用SQL查询语句来查找数据库...
SQL查找某一字段相同,某一字段不同的数据
1、在我们的电脑上打开数据库,这里新建一张含有重复数据的user表做示例。2、我们输入“select * from user where name in (select name from user group by name having count(name) > 1) ”sql语句,点击运行可以看到查询出了数据库中user表的重复数据。3、通过“delete from user where name...
如何用SQL语句实现相同列值只取一行?
select top 1 * from 表 where 公司 in (select distinct 公司 from 表)
用SQL语句怎么把同一个表中一行的内容全部替换为另一行除了保留ID
update table_name set (name,umber,xxx,...) = (select name,umber,xxx,... from (select name,umber,xxx,..., rownum rn from table_name) where rn=62) where id in (select id from (select id, rownum rn from table_name) where rn > 62 and rn<71);...
SQL 查询语句中如果某个字段有相同值时只显示一行
select from (select *,row_number() over(parititon by id,name order by age desc) rn from table_name ) t where rn<=1 --desc不加就是选年纪小的那行