sql 如何取出某个字段相同的信息的指定的行数
数据库内容图片如下图:姓名相同信息条数如果超过两条就只取出其中两条显示,小于两条就直接取出。请问大侠们怎么写sql语句?...
数据库内容图片如下图:
姓名相同信息条数如果超过两条就只取出其中两条显示,小于两条就直接取出。请问大侠们怎么写sql语句? 展开
姓名相同信息条数如果超过两条就只取出其中两条显示,小于两条就直接取出。请问大侠们怎么写sql语句? 展开
3个回答
展开全部
如果你这个表有唯一列就好办了,如果没有唯一列,可以用临时表来解决,以下代码在我本机上测试 通过
--创建测试环境
Create table tbl(
ZS_employee varchar(40),
ZYL_name varchar(40),
ZS_ZCBH varchar(40)
)
insert into tbl values('zhang','施工总承包','注册编号')
insert into tbl values ('王五','施工总承包','注册编号')
insert into tbl values ('王五','施工总承包','123456789')
insert into tbl values ('zhang','施工总承包','123456789')
insert into tbl values ('李四','施工总承包','ZCJL2009')
insert into tbl values ('李四','房屋建筑','ZCJL2010')
insert into tbl values ('张四','房屋建筑','ZC457621')
insert into tbl values ('王五','房屋建筑','ZC457621')
--实现查询结果
select NEWID() as ID,* into #temp from tbl
select ZS_employee,zyl_name,zs_zcbh from #temp a
where A.ID in (select top 2 ID from #temp b where a.ZS_employee=b.ZS_employee)
drop table #temp
--创建测试环境
Create table tbl(
ZS_employee varchar(40),
ZYL_name varchar(40),
ZS_ZCBH varchar(40)
)
insert into tbl values('zhang','施工总承包','注册编号')
insert into tbl values ('王五','施工总承包','注册编号')
insert into tbl values ('王五','施工总承包','123456789')
insert into tbl values ('zhang','施工总承包','123456789')
insert into tbl values ('李四','施工总承包','ZCJL2009')
insert into tbl values ('李四','房屋建筑','ZCJL2010')
insert into tbl values ('张四','房屋建筑','ZC457621')
insert into tbl values ('王五','房屋建筑','ZC457621')
--实现查询结果
select NEWID() as ID,* into #temp from tbl
select ZS_employee,zyl_name,zs_zcbh from #temp a
where A.ID in (select top 2 ID from #temp b where a.ZS_employee=b.ZS_employee)
drop table #temp
追问
非常感谢,我想再问下,我如果想让相同姓名的行合并成一行显示,每行显示四列,显示成这样
ZS_employee ZYL_name ZYL_name2 zs_zcbh
zhang 施工总承包 施工总承包 注册编号
李四 施工总承包 房屋建筑 123456789
王五 施工总承包 施工总承包 注册编号
张四 房屋建筑 无 ZC14567
追答
select e.*,f.zyl_name as zyl_name2 from
(
select *
from #temp a
where A.id in (select top 1 ID from #temp b where a.ZS_employee=b.ZS_employee order by ID)
)e,
(
select *
from #temp c
where C.id in (select top 1 ID from #temp D where C.ZS_employee=D.ZS_employee order by ID desc)
)f
where e.zs_employee=f.zs_employee
展开全部
这个需要写个SQL过程才行。
先用游标取出所有姓名(不重复)
然后循环游标,一个个的取出来,存在临时表里。
最后从临时表里返回结果。
先用游标取出所有姓名(不重复)
然后循环游标,一个个的取出来,存在临时表里。
最后从临时表里返回结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) from 数据库名称 where ZS_employee='李四'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询