sql 如何取出某个字段相同的信息的指定的行数

数据库内容图片如下图:姓名相同信息条数如果超过两条就只取出其中两条显示,小于两条就直接取出。请问大侠们怎么写sql语句?... 数据库内容图片如下图:
姓名相同信息条数如果超过两条就只取出其中两条显示,小于两条就直接取出。请问大侠们怎么写sql语句?
展开
 我来答
勾悦乐03e
2011-07-19 · 超过13用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:37.7万
展开全部
如果你这个表有唯一列就好办了,如果没有唯一列,可以用临时表来解决,以下代码在我本机上测试 通过

--创建测试环境
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
百度网友2059bc0ea
2011-07-19 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:156
采纳率:100%
帮助的人:144万
展开全部
这个需要写个SQL过程才行。
先用游标取出所有姓名(不重复)
然后循环游标,一个个的取出来,存在临时表里。
最后从临时表里返回结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lysecond
2011-07-19 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.3万
采纳率:83%
帮助的人:2480万
展开全部
select count(*) from 数据库名称 where ZS_employee='李四'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式