黑马程序员技术交流社区

标题: 关于top [打印本页]

作者: 余晓亮    时间: 2012-4-26 08:54
标题: 关于top
在呼叫员工作流水的练习时,输出所有数据中通话时间最长的5条记录select top 5 *, DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' from T_LianXi
order by DATEDIFF(SECOND,Starttime,Endtime) desc,我这样写:
select top 5 *, DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' from T_LianXi
order by DATEDIFF(SECOND,Starttime,Endtime) desc
这样没有出现自己想象中的结果。它先把所有的数据记录输出,然后输出了所有数据中通话时间最长的5条记录。怎么会这样?
作者: 郭耀强    时间: 2012-4-26 11:48
select top 5 *, DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' from T_LianXi
order by DATEDIFF(SECOND,Starttime,Endtime) desc
这个意思就是说:输出所有数据中通话时间最长的5条记录, 你想要的结果,你说出来。
作者: 余晓亮    时间: 2012-4-26 13:10
郭耀强 发表于 2012-4-26 11:48
select top 5 *, DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' from T_LianXi
order by DATEDIFF(SE ...

执行代码 结果分为两部分:1是所有数据的通话记录。2是所有数据中最长的5条记录。第二部分是我想要的。
已经top5*了 怎么还会出现第一部分?而且第一部分还是全部的数据,而不是前5条?
作者: 余晓亮    时间: 2012-4-26 13:12
郭耀强 发表于 2012-4-26 11:48
select top 5 *, DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' from T_LianXi
order by DATEDIFF(SE ...

select top 5 DATEDIFF(SECOND,Starttime,Endtime)as N'通话时长' ,* from T_LianXi
order by DATEDIFF(SECOND,Starttime,Endtime) desc
如果这样 结果就不会出现两部分 只有通话最长的5条记录。
作者: 郭耀强    时间: 2012-4-26 21:43
效果是这样

1.png (36.82 KB, 下载次数: 66)

1.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2